<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="Robot Framework 2.8.3 (Python 2.7.2 on darwin)" name="Generator">
<link rel="icon" type="image/x-icon" href="">
<style media="all" type="text/css">
body {
    background: white;
    color: black;
    font-size: small;
    font-family: sans-serif;
    padding: 0 0.5em;
}
.metadata th {
    text-align: left;
    padding-right: 1em;
}
a.name, span.name {
    font-style: italic;
}
a, a:link, a:visited {
    color: #c30;
}
a img {
    border: 1px solid #c30 !important;
}
a:hover, a:active {
    text-decoration: underline;
    color: black;
}
div.shortcuts {
    margin: 1em 0;
    font-size: 0.9em;
}
div.shortcuts a {
    display: inline-block;
    text-decoration: none;
    white-space: nowrap;
    color: black;
}
div.shortcuts a::first-letter {
    font-weight: bold;
    font-size: 1.05em;
    letter-spacing: 0.1em;
}
div.shortcuts a:hover {
    text-decoration: underline;
}
table.keywords {
    border: 2px solid black;
    border-collapse: collapse;
    empty-cells: show;
    margin: 0.3em 0;
    width: 100%;
}
table.keywords th, table.keywords td {
    border: 2px solid black;
    padding: 0.2em;
    vertical-align: top;
}
table.keywords th {
    background: #bbb;
    color: black;
}
table.keywords td.kw {
    width: 150px;
    font-weight: bold;
}
table.keywords td.arg {
    width: 300px;
    font-style: italic;
}
.footer {
    font-size: 0.9em;
}
/* Docs originating from HTML and reST are wrapped to divs. */
.doc div > *:first-child {
    margin-top: 0;
}
.doc div > *:last-child {    /* Does not work with IE8. */
    margin-bottom: 0;
}
</style>
<style media="print" type="text/css">
body {
    margin: 0;
    padding: 0;
    font-size: 8pt;
}
a {
    text-decoration: none;
}
</style>
<style media="all" type="text/css">
#javascript-disabled {
    width: 600px;
    margin: 100px auto 0 auto;
    padding: 20px;
    color: #2A2A2E;
    border: 1px solid #9A9A9E;
    background: #FAFAFF;
}
#javascript-disabled h1 {
    width: 100%;
    float: none;
}
#javascript-disabled ul {
    font-size: 1.2em;
}
#javascript-disabled li {
    margin: 0.5em 0;
}
#javascript-disabled b {
    font-style: italic;
}
</style>
<style media="all" type="text/css">
.doc > * {
    margin: 0.7em 1em 0.1em 1em;
    padding: 0;
}
.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
    margin: 0.7em 0 0.1em 0;
}
.doc > *:first-child {
    margin-top: 0.1em;
}
.doc table {
    border: 1px solid gray;
    background: transparent;
    border-collapse: collapse;
    empty-cells: show;
    font-size: 0.9em;
}
.doc table th, .doc table td {
    border: 1px solid gray;
    background: transparent;
    padding: 0.1em 0.3em;
    height: 1.2em;
}
.doc table th {
    text-align: center;
    letter-spacing: 0.1em;
}
.doc pre {
    font-size: 1.1em;
    background: #F4F4FF;
}
.doc li {
    list-style-position: inside;
    list-style-type: square;
}
.doc img {
    border: 1px solid gray;
}
.doc hr {
    background: gray;
    height: 1px;
    border: 0;
}
</style>
<script type="text/javascript">
/*! jQuery v1.8.3 jquery.com | jquery.org/license */
(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
</script>
<script type="text/javascript">
/*
 * jQuery Templates Plugin 1.0.0pre
 * http://github.com/jquery/jquery-tmpl
 * Requires jQuery 1.4.2
 *
 * Copyright Software Freedom Conservancy, Inc.
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 */
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
</script>
<script type="text/javascript">
libdoc = {"doc":"<p>An always available standard library with often needed keywords.\x3c/p>\n<p><span class=\"name\">BuiltIn\x3c/span> is Robot Framework's standard library that provides a set of generic keywords needed often. It is imported automatically and thus always available. The provided keywords can be used, for example, for verifications (e.g. <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a>, <a href=\"#Should Contain\" class=\"name\">Should Contain\x3c/a>), conversions (e.g. <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a>) and for various other purposes (e.g. <a href=\"#Log\" class=\"name\">Log\x3c/a>, <a href=\"#Sleep\" class=\"name\">Sleep\x3c/a>, <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>, <a href=\"#Set Global Variable\" class=\"name\">Set Global Variable\x3c/a>).\x3c/p>\n<p>Many of the keywords accept an optional error message to use if the keyword fails. Starting from Robot Framework 2.8, it is possible to use HTML in these messages by prefixing them with <span class=\"name\">*HTML*\x3c/span>. See <a href=\"#Fail\" class=\"name\">Fail\x3c/a> keyword for a usage example. Notice that using HTML in messages is not limited to BuiltIn library but works with any error message.\x3c/p>","generated":"2013-12-03 14:25:27","inits":[],"keywords":[{"args":"object, method_name, *args","doc":"<p>Calls the named method of the given object with the provided arguments.\x3c/p>\n<p>The possible return value from the method is returned and can be assigned to a variable. Keyword fails both if the object does not have a method with the given name or if executing the method raises an exception.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Call Method\x3c/td>\n<td>${hashtable}\x3c/td>\n<td>put\x3c/td>\n<td>myname\x3c/td>\n<td>myvalue\x3c/td>\n\x3c/tr>\n<tr>\n<td>${isempty} =\x3c/td>\n<td>Call Method\x3c/td>\n<td>${hashtable}\x3c/td>\n<td>isEmpty\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Not Be True\x3c/td>\n<td>${isempty}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${value} =\x3c/td>\n<td>Call Method\x3c/td>\n<td>${hashtable}\x3c/td>\n<td>get\x3c/td>\n<td>myname\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${value}\x3c/td>\n<td>myvalue\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Call Method","shortdoc":"Calls the named method of the given object with the provided arguments."},{"args":"*items","doc":"<p>Catenates the given items together and returns the resulted string.\x3c/p>\n<p>By default, items are catenated with spaces, but if the first item contains the string 'SEPARATOR=&lt;sep&gt;', the separator '&lt;sep&gt;' is used. Items are converted into strings when necessary.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${str1} =\x3c/td>\n<td>Catenate\x3c/td>\n<td>Hello\x3c/td>\n<td>world\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${str2} =\x3c/td>\n<td>Catenate\x3c/td>\n<td>SEPARATOR=---\x3c/td>\n<td>Hello\x3c/td>\n<td>world\x3c/td>\n\x3c/tr>\n<tr>\n<td>${str3} =\x3c/td>\n<td>Catenate\x3c/td>\n<td>SEPARATOR=\x3c/td>\n<td>Hello\x3c/td>\n<td>world\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>=&gt;\x3c/p>\n<pre>\n${str1} = 'Hello world'\n${str2} = 'Hello---world'\n${str3} = 'Helloworld'\n\x3c/pre>","name":"Catenate","shortdoc":"Catenates the given items together and returns the resulted string."},{"args":"*messages","doc":"<p>Displays the given messages in the log file as keyword arguments.\x3c/p>\n<p>This keyword does nothing with the arguments it receives, but as they are visible in the log, this keyword can be used to display simple messages. Given arguments are ignored so thoroughly that they can even contain non-existing variables. If you are interested about variable values, you can use the <a href=\"#Log\" class=\"name\">Log\x3c/a> or <a href=\"#Log Many\" class=\"name\">Log Many\x3c/a> keywords.\x3c/p>","name":"Comment","shortdoc":"Displays the given messages in the log file as keyword arguments."},{"args":"","doc":"<p>Skips the current for loop iteration and continues from the next.\x3c/p>\n<p>Skips the remaining keywords in the current for loop iteration and continues from the next one. Can be used directly in a for loop or in a keyword that the loop uses.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>:FOR\x3c/td>\n<td>${var}\x3c/td>\n<td>IN\x3c/td>\n<td>@{VALUES}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Run Keyword If\x3c/td>\n<td>'${var}' == 'CONTINUE'\x3c/td>\n<td>Continue For Loop\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Do Something\x3c/td>\n<td>${var}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See <a href=\"#Continue For Loop If\" class=\"name\">Continue For Loop If\x3c/a> to conditionally continue a for loop without using <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a> or other wrapper keywords.\x3c/p>\n<p>New in Robot Framework 2.8.\x3c/p>","name":"Continue For Loop","shortdoc":"Skips the current for loop iteration and continues from the next."},{"args":"condition","doc":"<p>Skips the current for loop iteration if the <span class=\"name\">condition\x3c/span> is true.\x3c/p>\n<p>A wrapper for <a href=\"#Continue For Loop\" class=\"name\">Continue For Loop\x3c/a> to continue a for loop based on the given condition. The condition is evaluated using the same semantics as with <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> keyword.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>:FOR\x3c/td>\n<td>${var}\x3c/td>\n<td>IN\x3c/td>\n<td>@{VALUES}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Continue For Loop If\x3c/td>\n<td>'${var}' == 'CONTINUE'\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Do Something\x3c/td>\n<td>${var}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>New in Robot Framework 2.8.\x3c/p>","name":"Continue For Loop If","shortdoc":"Skips the current for loop iteration if the `condition` is true."},{"args":"item, base=None, prefix=None, length=None","doc":"<p>Converts the given item to a binary string.\x3c/p>\n<p>The <span class=\"name\">item\x3c/span>, with an optional <span class=\"name\">base\x3c/span>, is first converted to an integer using <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a> internally. After that it is converted to a binary number (base 2) represented as a string such as <span class=\"name\">'1011'\x3c/span>.\x3c/p>\n<p>The returned value can contain an optional <span class=\"name\">prefix\x3c/span> and can be required to be of minimum <span class=\"name\">length\x3c/span> (excluding the prefix and a possible minus sign). If the value is initially shorter than the required length, it is padded with zeros.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Binary\x3c/td>\n<td>10\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td># Result is 1010\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Binary\x3c/td>\n<td>F\x3c/td>\n<td>base=16\x3c/td>\n<td>prefix=0b\x3c/td>\n<td># Result is 0b1111\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Binary\x3c/td>\n<td>-2\x3c/td>\n<td>prefix=B\x3c/td>\n<td>length=4\x3c/td>\n<td># Result is -B0010\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword was added in Robot Framework 2.6. See also <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a>, <a href=\"#Convert To Octal\" class=\"name\">Convert To Octal\x3c/a> and <a href=\"#Convert To Hex\" class=\"name\">Convert To Hex\x3c/a>.\x3c/p>","name":"Convert To Binary","shortdoc":"Converts the given item to a binary string."},{"args":"item","doc":"<p>Converts the given item to Boolean true or false.\x3c/p>\n<p>Handles strings <span class=\"name\">True\x3c/span> and <span class=\"name\">False\x3c/span> (case-insensitive) as expected, otherwise returns item's <a href=\"http://docs.python.org/2/library/stdtypes.html#truth\">truth value\x3c/a> using Python's <span class=\"name\">bool\x3c/span> method.\x3c/p>","name":"Convert To Boolean","shortdoc":"Converts the given item to Boolean true or false."},{"args":"input, input_type=text","doc":"<p>Converts the given <span class=\"name\">input\x3c/span> to bytes according to the <span class=\"name\">input_type\x3c/span>.\x3c/p>\n<p>Valid input types are listed below:\x3c/p>\n<ul>\n<li><b>text:\x3c/b> Converts text to bytes character by character. All characters with ordinal below 256 can be used and are converted to bytes with same values. Many characters are easiest to represent using escapes like <span class=\"name\">\\x00\x3c/span> or <span class=\"name\">\\xff\x3c/span>.\x3c/li>\n\x3c/ul>\n<ul>\n<li><b>int:\x3c/b> Converts integers separated by spaces to bytes. Similarly as with <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a>, it is possible to use binary, octal, or hex values by prefixing the values with <span class=\"name\">0b\x3c/span>, <span class=\"name\">0o\x3c/span>, or <span class=\"name\">0x\x3c/span>, respectively.\x3c/li>\n\x3c/ul>\n<ul>\n<li><b>hex:\x3c/b> Converts hexadecimal values to bytes. Single byte is always two characters long (e.g. <span class=\"name\">01\x3c/span> or <span class=\"name\">FF\x3c/span>). Spaces are ignored and can be used freely as a visual separator.\x3c/li>\n\x3c/ul>\n<ul>\n<li><b>bin:\x3c/b> Converts binary values to bytes. Single byte is always eight characters long (e.g. <span class=\"name\">00001010\x3c/span>). Spaces are ignored and can be used freely as a visual separator.\x3c/li>\n\x3c/ul>\n<p>In addition to giving the input as a string, it is possible to use lists or other iterables containing individual characters or numbers. In that case numbers do not need to be padded to certain length and they cannot contain extra spaces.\x3c/p>\n<p>Examples (last column shows returned bytes):\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>hyvä\x3c/td>\n<td>\x3c/td>\n<td># hyv\\xe4\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>\\xff\\x07\x3c/td>\n<td>\x3c/td>\n<td># \\xff\\x07\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>82 70\x3c/td>\n<td>int\x3c/td>\n<td># RF\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>0b10 0x10\x3c/td>\n<td>int\x3c/td>\n<td># \\x02\\x10\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>ff 00 07\x3c/td>\n<td>hex\x3c/td>\n<td># \\xff\\x00\\x07\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>5246212121\x3c/td>\n<td>hex\x3c/td>\n<td># RF!!!\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>0000 1000\x3c/td>\n<td>bin\x3c/td>\n<td># \\x08\x3c/td>\n\x3c/tr>\n<tr>\n<td>${input} =\x3c/td>\n<td>Create List\x3c/td>\n<td>1\x3c/td>\n<td>2\x3c/td>\n<td>12\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>${input}\x3c/td>\n<td>int\x3c/td>\n<td># \\x01\\x02\\x0c\x3c/td>\n\x3c/tr>\n<tr>\n<td>${bytes} =\x3c/td>\n<td>Convert To Bytes\x3c/td>\n<td>${input}\x3c/td>\n<td>hex\x3c/td>\n<td># \\x01\\x02\\x12\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Use <span class=\"name\">Encode String To Bytes\x3c/span> in <span class=\"name\">String\x3c/span> library if you need to convert text to bytes using a certain encoding.\x3c/p>\n<p>New in Robot Framework 2.8.2.\x3c/p>","name":"Convert To Bytes","shortdoc":"Converts the given `input` to bytes according to the `input_type`."},{"args":"item, base=None, prefix=None, length=None, lowercase=False","doc":"<p>Converts the given item to a hexadecimal string.\x3c/p>\n<p>The <span class=\"name\">item\x3c/span>, with an optional <span class=\"name\">base\x3c/span>, is first converted to an integer using <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a> internally. After that it is converted to a hexadecimal number (base 16) represented as a string such as <span class=\"name\">'FF0A'\x3c/span>.\x3c/p>\n<p>The returned value can contain an optional <span class=\"name\">prefix\x3c/span> and can be required to be of minimum <span class=\"name\">length\x3c/span> (excluding the prefix and a possible minus sign). If the value is initially shorter than the required length, it is padded with zeros.\x3c/p>\n<p>By default the value is returned as an upper case string, but giving any non-empty value to the <span class=\"name\">lowercase\x3c/span> argument turns the value (but not the prefix) to lower case.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Hex\x3c/td>\n<td>255\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td># Result is FF\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Hex\x3c/td>\n<td>-10\x3c/td>\n<td>prefix=0x\x3c/td>\n<td>length=2\x3c/td>\n<td># Result is -0x0A\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Hex\x3c/td>\n<td>255\x3c/td>\n<td>prefix=X\x3c/td>\n<td>lowercase=yes\x3c/td>\n<td># Result is Xff\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword was added in Robot Framework 2.6. See also <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a>, <a href=\"#Convert To Binary\" class=\"name\">Convert To Binary\x3c/a> and <a href=\"#Convert To Octal\" class=\"name\">Convert To Octal\x3c/a>.\x3c/p>","name":"Convert To Hex","shortdoc":"Converts the given item to a hexadecimal string."},{"args":"item, base=None","doc":"<p>Converts the given item to an integer number.\x3c/p>\n<p>If the given item is a string, it is by default expected to be an integer in base 10. Starting from Robot Framework 2.6 there are two ways to convert from other bases:\x3c/p>\n<ul>\n<li>Give base explicitly to the keyword as <span class=\"name\">base\x3c/span> argument.\x3c/li>\n\x3c/ul>\n<ul>\n<li>Prefix the given string with the base so that <span class=\"name\">0b\x3c/span> means binary (base 2), <span class=\"name\">0o\x3c/span> means octal (base 8), and <span class=\"name\">0x\x3c/span> means hex (base 16). The prefix is considered only when <span class=\"name\">base\x3c/span> argument is not given and may itself be prefixed with a plus or minus sign.\x3c/li>\n\x3c/ul>\n<p>The syntax is case-insensitive and possible spaces are ignored.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Integer\x3c/td>\n<td>100\x3c/td>\n<td>\x3c/td>\n<td># Result is 100\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Integer\x3c/td>\n<td>FF AA\x3c/td>\n<td>16\x3c/td>\n<td># Result is 65450\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Integer\x3c/td>\n<td>100\x3c/td>\n<td>8\x3c/td>\n<td># Result is 64\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Integer\x3c/td>\n<td>-100\x3c/td>\n<td>2\x3c/td>\n<td># Result is -4\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Integer\x3c/td>\n<td>0b100\x3c/td>\n<td>\x3c/td>\n<td># Result is 4\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Integer\x3c/td>\n<td>-0x100\x3c/td>\n<td>\x3c/td>\n<td># Result is -256\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See also <a href=\"#Convert To Number\" class=\"name\">Convert To Number\x3c/a>, <a href=\"#Convert To Binary\" class=\"name\">Convert To Binary\x3c/a>, <a href=\"#Convert To Octal\" class=\"name\">Convert To Octal\x3c/a>, <a href=\"#Convert To Hex\" class=\"name\">Convert To Hex\x3c/a>, and <a href=\"#Convert To Bytes\" class=\"name\">Convert To Bytes\x3c/a>.\x3c/p>","name":"Convert To Integer","shortdoc":"Converts the given item to an integer number."},{"args":"item, precision=None","doc":"<p>Converts the given item to a floating point number.\x3c/p>\n<p>If the optional <span class=\"name\">precision\x3c/span> is positive or zero, the returned number is rounded to that number of decimal digits. Negative precision means that the number is rounded to the closest multiple of 10 to the power of the absolute precision. The support for precision was added in Robot Framework 2.6.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Number\x3c/td>\n<td>42.512\x3c/td>\n<td>\x3c/td>\n<td># Result is 42.512\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Number\x3c/td>\n<td>42.512\x3c/td>\n<td>1\x3c/td>\n<td># Result is 42.5\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Number\x3c/td>\n<td>42.512\x3c/td>\n<td>0\x3c/td>\n<td># Result is 43.0\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Number\x3c/td>\n<td>42.512\x3c/td>\n<td>-1\x3c/td>\n<td># Result is 40.0\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Notice that machines generally cannot store floating point numbers accurately. This may cause surprises with these numbers in general and also when they are rounded. For more information see, for example, these resources:\x3c/p>\n<ul>\n<li><a href=\"http://docs.python.org/2/tutorial/floatingpoint.html\">http://docs.python.org/2/tutorial/floatingpoint.html\x3c/a>\x3c/li>\n<li><a href=\"http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition\">http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition\x3c/a>\x3c/li>\n\x3c/ul>\n<p>If you need an integer number, use <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a> instead.\x3c/p>","name":"Convert To Number","shortdoc":"Converts the given item to a floating point number."},{"args":"item, base=None, prefix=None, length=None","doc":"<p>Converts the given item to an octal string.\x3c/p>\n<p>The <span class=\"name\">item\x3c/span>, with an optional <span class=\"name\">base\x3c/span>, is first converted to an integer using <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a> internally. After that it is converted to an octal number (base 8) represented as a string such as <span class=\"name\">'775'\x3c/span>.\x3c/p>\n<p>The returned value can contain an optional <span class=\"name\">prefix\x3c/span> and can be required to be of minimum <span class=\"name\">length\x3c/span> (excluding the prefix and a possible minus sign). If the value is initially shorter than the required length, it is padded with zeros.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Octal\x3c/td>\n<td>10\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td># Result is 12\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Octal\x3c/td>\n<td>-F\x3c/td>\n<td>base=16\x3c/td>\n<td>prefix=0\x3c/td>\n<td># Result is -017\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td>Convert To Octal\x3c/td>\n<td>16\x3c/td>\n<td>prefix=oct\x3c/td>\n<td>length=4\x3c/td>\n<td># Result is oct0020\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword was added in Robot Framework 2.6. See also <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a>, <a href=\"#Convert To Binary\" class=\"name\">Convert To Binary\x3c/a> and <a href=\"#Convert To Hex\" class=\"name\">Convert To Hex\x3c/a>.\x3c/p>","name":"Convert To Octal","shortdoc":"Converts the given item to an octal string."},{"args":"item","doc":"<p>Converts the given item to a Unicode string.\x3c/p>\n<p>Uses <span class=\"name\">__unicode__\x3c/span> or <span class=\"name\">__str__\x3c/span> method with Python objects and <span class=\"name\">toString\x3c/span> with Java objects.\x3c/p>\n<p>Use <span class=\"name\">Encode String To Bytes\x3c/span> and <span class=\"name\">Decode Bytes To String\x3c/span> keywords in <span class=\"name\">String\x3c/span> library if you need to convert between Unicode and byte strings using different encodings. Use <a href=\"#Convert To Bytes\" class=\"name\">Convert To Bytes\x3c/a> if you just want to create byte strings.\x3c/p>","name":"Convert To String","shortdoc":"Converts the given item to a Unicode string."},{"args":"*items","doc":"<p>Returns a list containing given items.\x3c/p>\n<p>The returned list can be assigned both to <span class=\"name\">${scalar}\x3c/span> and <span class=\"name\">@{list}\x3c/span> variables.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>@{list} =\x3c/td>\n<td>Create List\x3c/td>\n<td>a\x3c/td>\n<td>b\x3c/td>\n<td>c\x3c/td>\n\x3c/tr>\n<tr>\n<td>${scalar} =\x3c/td>\n<td>Create List\x3c/td>\n<td>a\x3c/td>\n<td>b\x3c/td>\n<td>c\x3c/td>\n\x3c/tr>\n<tr>\n<td>${ints} =\x3c/td>\n<td>Create List\x3c/td>\n<td>${1}\x3c/td>\n<td>${2}\x3c/td>\n<td>${3}\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Create List","shortdoc":"Returns a list containing given items."},{"args":"expression, modules=None","doc":"<p>Evaluates the given expression in Python and returns the results.\x3c/p>\n<p><span class=\"name\">modules\x3c/span> argument can be used to specify a comma separated list of Python modules to be imported and added to the namespace of the evaluated <span class=\"name\">expression\x3c/span>.\x3c/p>\n<p>Examples (expecting <span class=\"name\">${result}\x3c/span> is 3.14):\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${status} =\x3c/td>\n<td>Evaluate\x3c/td>\n<td>0 &lt; ${result} &lt; 10\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${down}   =\x3c/td>\n<td>Evaluate\x3c/td>\n<td>int(${result})\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${up}     =\x3c/td>\n<td>Evaluate\x3c/td>\n<td>math.ceil(${result})\x3c/td>\n<td>math\x3c/td>\n\x3c/tr>\n<tr>\n<td>${random} =\x3c/td>\n<td>Evaluate\x3c/td>\n<td>random.randint(0, sys.maxint)\x3c/td>\n<td>random,sys\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>=&gt;\x3c/p>\n<pre>\n${status} = True\n${down} = 3\n${up} = 4.0\n${random} = &lt;random integer&gt;\n\x3c/pre>\n<p>Notice that instead of creating complicated expressions, it is recommended to move the logic into a test library.\x3c/p>","name":"Evaluate","shortdoc":"Evaluates the given expression in Python and returns the results."},{"args":"","doc":"<p>Stops executing the enclosing for loop.\x3c/p>\n<p>Exits the enclosing for loop and continues execution after it. Can be used directly in a for loop or in a keyword that the loop uses.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>:FOR\x3c/td>\n<td>${var}\x3c/td>\n<td>IN\x3c/td>\n<td>@{VALUES}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Run Keyword If\x3c/td>\n<td>'${var}' == 'EXIT'\x3c/td>\n<td>Exit For Loop\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Do Something\x3c/td>\n<td>${var}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See <a href=\"#Exit For Loop If\" class=\"name\">Exit For Loop If\x3c/a> to conditionally exit a for loop without using <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a> or other wrapper keywords.\x3c/p>\n<p>New in Robot Framework 2.5.2.\x3c/p>","name":"Exit For Loop","shortdoc":"Stops executing the enclosing for loop."},{"args":"condition","doc":"<p>Stops executing the enclosing for loop if the <span class=\"name\">condition\x3c/span> is true.\x3c/p>\n<p>A wrapper for <a href=\"#Exit For Loop\" class=\"name\">Exit For Loop\x3c/a> to exit a for loop based on the given condition. The condition is evaluated using the same semantics as with <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> keyword.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>:FOR\x3c/td>\n<td>${var}\x3c/td>\n<td>IN\x3c/td>\n<td>@{VALUES}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Exit For Loop If\x3c/td>\n<td>'${var}' == 'EXIT'\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Do Something\x3c/td>\n<td>${var}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>New in Robot Framework 2.8.\x3c/p>","name":"Exit For Loop If","shortdoc":"Stops executing the enclosing for loop if the `condition` is true."},{"args":"msg=None, *tags","doc":"<p>Fails the test with the given message and optionally alters its tags.\x3c/p>\n<p>The error message is specified using the <span class=\"name\">msg\x3c/span> argument. It is possible to use HTML in the given error message, similarly as with any other keyword accepting an error message, by prefixing the error with <span class=\"name\">*HTML*\x3c/span>.\x3c/p>\n<p>It is possible to modify tags of the current test case by passing tags after the message. Tags starting with a hyphen (e.g. <span class=\"name\">-regression\x3c/span>) are removed and others added. Tags are modified using <a href=\"#Set Tags\" class=\"name\">Set Tags\x3c/a> and <a href=\"#Remove Tags\" class=\"name\">Remove Tags\x3c/a> internally, and the semantics setting and removing them are the same as with these keywords.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Fail\x3c/td>\n<td>Test not ready\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td># Fails with the given message.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Fail\x3c/td>\n<td>*HTML*&lt;b&gt;Test not ready&lt;/b&gt;\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td># Fails using HTML in the message.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Fail\x3c/td>\n<td>Test not ready\x3c/td>\n<td>not-ready\x3c/td>\n<td>\x3c/td>\n<td># Fails and adds 'not-ready' tag.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Fail\x3c/td>\n<td>OS not supported\x3c/td>\n<td>-regression\x3c/td>\n<td>\x3c/td>\n<td># Removes tag 'regression'.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Fail\x3c/td>\n<td>My message\x3c/td>\n<td>tag\x3c/td>\n<td>-t*\x3c/td>\n<td># Removes all tags starting with 't' except the newly added 'tag'.\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See <a href=\"#Fatal Error\" class=\"name\">Fatal Error\x3c/a> if you need to stop the whole test execution.\x3c/p>\n<p>Support for modifying tags was added in Robot Framework 2.7.4 and HTML message support in 2.8.\x3c/p>","name":"Fail","shortdoc":"Fails the test with the given message and optionally alters its tags."},{"args":"msg=None","doc":"<p>Stops the whole test execution.\x3c/p>\n<p>The test or suite where this keyword is used fails with the provided message, and subsequent tests fail with a canned message. Possible teardowns will nevertheless be executed.\x3c/p>\n<p>See <a href=\"#Fail\" class=\"name\">Fail\x3c/a> if you only want to stop one test case unconditionally.\x3c/p>","name":"Fatal Error","shortdoc":"Stops the whole test execution."},{"args":"item1, item2","doc":"<p>Returns and logs how many times <span class=\"name\">item2\x3c/span> is found from <span class=\"name\">item1\x3c/span>.\x3c/p>\n<p>This keyword works with Python strings and lists and all objects that either have 'count' method or can be converted to Python lists.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${count} =\x3c/td>\n<td>Get Count\x3c/td>\n<td>${some item}\x3c/td>\n<td>interesting value\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be True\x3c/td>\n<td>5 &lt; ${count} &lt; 10\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Get Count","shortdoc":"Returns and logs how many times `item2` is found from `item1`."},{"args":"item","doc":"<p>Returns and logs the length of the given item.\x3c/p>\n<p>The item can be anything that has a length, for example, a string, a list, or a mapping. The keyword first tries to get the length with the Python function <span class=\"name\">len\x3c/span>, which calls the  item's <span class=\"name\">__len__\x3c/span> method internally. If that fails, the keyword tries to call the item's possible <span class=\"name\">length\x3c/span> and <span class=\"name\">size\x3c/span> methods directly. The final attempt is trying to get the value of the item's <span class=\"name\">length\x3c/span> attribute. If all these attempts are unsuccessful, the keyword fails.\x3c/p>\n<p>It is possible to use this keyword also with list variables (e.g. <span class=\"name\">@{LIST}\x3c/span>), but you need to use them as scalars (e.g. <span class=\"name\">${LIST}\x3c/span>).\x3c/p>","name":"Get Length","shortdoc":"Returns and logs the length of the given item."},{"args":"name","doc":"<p>Returns the currently active instance of the specified test library.\x3c/p>\n<p>This keyword makes it easy for test libraries to interact with other test libraries that have state. This is illustrated by the Python example below:\x3c/p>\n<pre>\nfrom robot.libraries.BuiltIn import BuiltIn\n\ndef title_should_start_with(expected):\n    seleniumlib = BuiltIn().get_library_instance('SeleniumLibrary')\n    title = seleniumlib.get_title()\n    if not title.startswith(expected):\n        raise AssertionError(\"Title '%s' did not start with '%s'\"\n                             % (title, expected))\n\x3c/pre>\n<p>It is also possible to use this keyword in the test data and pass the returned library instance to another keyword. If a library is imported with a custom name, the <span class=\"name\">name\x3c/span> used to get the instance must be that name and not the original library name.\x3c/p>","name":"Get Library Instance","shortdoc":"Returns the currently active instance of the specified test library."},{"args":"format=timestamp, time_=NOW","doc":"<p>Returns the given time in the requested format.\x3c/p>\n<p>How time is returned is determined based on the given <span class=\"name\">format\x3c/span> string as follows. Note that all checks are case-insensitive.\x3c/p>\n<p>1) If <span class=\"name\">format\x3c/span> contains the word 'epoch', the time is returned in seconds after the UNIX epoch (1970-01-01 00:00:00 UTC). The return value is always an integer.\x3c/p>\n<p>2) If <span class=\"name\">format\x3c/span> contains any of the words 'year', 'month', 'day', 'hour', 'min', or 'sec', only the selected parts are returned. The order of the returned parts is always the one in the previous sentence and the order of words in <span class=\"name\">format\x3c/span> is not significant. The parts are returned as zero-padded strings (e.g. May -&gt; '05').\x3c/p>\n<p>3) Otherwise (and by default) the time is returned as a timestamp string in the format '2006-02-24 15:08:31'.\x3c/p>\n<p>By default this keyword returns the current local time, but that can be altered using <span class=\"name\">time\x3c/span> argument as explained below. Note that all checks involving strings are case-insensitive.\x3c/p>\n<p>1) If <span class=\"name\">time\x3c/span> is a number, or a string that can be converted to a number, it is interpreted as seconds since the UNIX epoch. This documentation was originally written about 1177654467 seconds after the epoch.\x3c/p>\n<p>2) If <span class=\"name\">time\x3c/span> is a timestamp, that time will be used. Valid timestamp formats are 'YYYY-MM-DD hh:mm:ss' and 'YYYYMMDD hhmmss'.\x3c/p>\n<p>3) If <span class=\"name\">time\x3c/span> is equal to 'NOW' (default), the current local time is used. This time is got using Python's 'time.time()' function.\x3c/p>\n<p>4) If <span class=\"name\">time\x3c/span> is equal to 'UTC', the current time in <a href=\"http://en.wikipedia.org/wiki/Coordinated_Universal_Time\">UTC\x3c/a> is used. This time is got using 'time.time() + time.altzone' in Python.\x3c/p>\n<p>5) If <span class=\"name\">time\x3c/span> is in the format like 'NOW - 1 day' or 'UTC + 1 hour 30 min', the current local/UTC time plus/minus the time specified with the time string is used. The time string format is described in an appendix of Robot Framework User Guide.\x3c/p>\n<p>Examples (expecting the current local time is 2006-03-29 15:06:21):\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${time} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${secs} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>epoch\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${year} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>return year\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${yyyy}\x3c/td>\n<td>${mm}\x3c/td>\n<td>${dd} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>year,month,day\x3c/td>\n\x3c/tr>\n<tr>\n<td>@{time} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>year month day hour min sec\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${y}\x3c/td>\n<td>${s} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>seconds and year\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>=&gt;\x3c/p>\n<pre>\n${time} = '2006-03-29 15:06:21'\n${secs} = 1143637581\n${year} = '2006'\n${yyyy} = '2006', ${mm} = '03', ${dd} = '29'\n@{time} = ['2006', '03', '29', '15', '06', '21']\n${y} = '2006'\n${s} = '21'\n\x3c/pre>\n<p>Examples (expecting the current local time is 2006-03-29 15:06:21 and UTC time is 2006-03-29 12:06:21):\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${time} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>\x3c/td>\n<td>1177654467\x3c/td>\n<td># Time given as epoch seconds\x3c/td>\n\x3c/tr>\n<tr>\n<td>${secs} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>sec\x3c/td>\n<td>2007-04-27 09:14:27\x3c/td>\n<td># Time given as a timestamp\x3c/td>\n\x3c/tr>\n<tr>\n<td>${year} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>year\x3c/td>\n<td>NOW\x3c/td>\n<td># The local time of execution\x3c/td>\n\x3c/tr>\n<tr>\n<td>@{time} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>hour min sec\x3c/td>\n<td>NOW + 1h 2min 3s\x3c/td>\n<td># 1h 2min 3s added to the local time\x3c/td>\n\x3c/tr>\n<tr>\n<td>@{utc} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>hour min sec\x3c/td>\n<td>UTC\x3c/td>\n<td># The UTC time of execution\x3c/td>\n\x3c/tr>\n<tr>\n<td>${hour} =\x3c/td>\n<td>Get Time\x3c/td>\n<td>hour\x3c/td>\n<td>UTC - 1 hour\x3c/td>\n<td># 1h subtracted from the UTC  time\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>=&gt;\x3c/p>\n<pre>\n${time} = '2007-04-27 09:14:27'\n${secs} = 27\n${year} = '2006'\n@{time} = ['16', '08', '24']\n@{utc} = ['12', '06', '21']\n${hour} = '11'\n\x3c/pre>\n<p>Support for UTC time was added in Robot Framework 2.7.5 but it did not work correctly until 2.7.7.\x3c/p>","name":"Get Time","shortdoc":"Returns the given time in the requested format."},{"args":"name, default=None","doc":"<p>Returns variable value or <span class=\"name\">default\x3c/span> if the variable does not exist.\x3c/p>\n<p>The name of the variable can be given either as a normal variable name (e.g. <span class=\"name\">${NAME}\x3c/span>) or in escaped format (e.g. <span class=\"name\">\\${NAME}\x3c/span>). Notice that the former has some limitations explained in <a href=\"#Set Suite Variable\" class=\"name\">Set Suite Variable\x3c/a>.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${x} =\x3c/td>\n<td>Get Variable Value\x3c/td>\n<td>${a}\x3c/td>\n<td>default\x3c/td>\n\x3c/tr>\n<tr>\n<td>${y} =\x3c/td>\n<td>Get Variable Value\x3c/td>\n<td>${a}\x3c/td>\n<td>${b}\x3c/td>\n\x3c/tr>\n<tr>\n<td>${z} =\x3c/td>\n<td>Get Variable Value\x3c/td>\n<td>${z}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>=&gt;\x3c/p>\n<pre>\n${x} gets value of ${a} if ${a} exists and string \"default\" otherwise\n${y} gets value of ${a} if ${a} exists and value of ${b} otherwise\n${z} is set to Python <span class=\"name\">None\x3c/span> if it does not exist previously\n\x3c/pre>\n<p>This keyword was added in Robot Framework 2.6. See <a href=\"#Set Variable If\" class=\"name\">Set Variable If\x3c/a> for another keyword to set variables dynamically.\x3c/p>","name":"Get Variable Value","shortdoc":"Returns variable value or `default` if the variable does not exist."},{"args":"","doc":"<p>Returns a dictionary containing all variables in the current scope.\x3c/p>\n<p>Variables are returned as a special dictionary that allows accessing variables in space, case, and underscore insensitive manner similarly as accessing variables in the test data. This dictionary supports all same operations as normal Python dictionaries and, for example, Collections library can be used to access or modify it. Modifying the returned dictionary has no effect on the variables available in the current scope.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${example_variable} =\x3c/td>\n<td>Set Variable\x3c/td>\n<td>example value\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${variables} =\x3c/td>\n<td>Get Variables\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Dictionary Should Contain Key\x3c/td>\n<td>${variables}\x3c/td>\n<td>\\${example_variable}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Dictionary Should Contain Key\x3c/td>\n<td>${variables}\x3c/td>\n<td>\\${ExampleVariable}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set To Dictionary\x3c/td>\n<td>${variables}\x3c/td>\n<td>\\${name}\x3c/td>\n<td>value\x3c/td>\n\x3c/tr>\n<tr>\n<td>Variable Should Not Exist\x3c/td>\n<td>\\${name}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Note: Prior to Robot Framework 2.7.4 variables were returned as a custom object that did not support all dictionary methods.\x3c/p>","name":"Get Variables","shortdoc":"Returns a dictionary containing all variables in the current scope."},{"args":"name, *args","doc":"<p>Imports a library with the given name and optional arguments.\x3c/p>\n<p>This functionality allows dynamic importing of libraries while tests are running. That may be necessary, if the library itself is dynamic and not yet available when test data is processed. In a normal case, libraries should be imported using the Library setting in the Setting table.\x3c/p>\n<p>This keyword supports importing libraries both using library names and physical paths. When paths are used, they must be given in absolute format. Forward slashes can be used as path separators in all operating systems.\x3c/p>\n<p>It is possible to pass arguments to the imported library and also named argument syntax works if the library supports it. 'WITH NAME' syntax can be used to give a custom name to the imported library.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Import Library\x3c/td>\n<td>MyLibrary\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Import Library\x3c/td>\n<td>${CURDIR}/../Library.py\x3c/td>\n<td>arg1\x3c/td>\n<td>named=arg2\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Import Library\x3c/td>\n<td>${LIBRARIES}/Lib.java\x3c/td>\n<td>arg\x3c/td>\n<td>WITH NAME\x3c/td>\n<td>JavaLib\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Import Library","shortdoc":"Imports a library with the given name and optional arguments."},{"args":"path","doc":"<p>Imports a resource file with the given path.\x3c/p>\n<p>Resources imported with this keyword are set into the test suite scope similarly when importing them in the Setting table using the Resource setting.\x3c/p>\n<p>The given path must be absolute. Forward slashes can be used as path separator regardless the operating system.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Import Resource\x3c/td>\n<td>${CURDIR}/resource.txt\x3c/td>\n\x3c/tr>\n<tr>\n<td>Import Resource\x3c/td>\n<td>${CURDIR}/../resources/resource.html\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Import Resource","shortdoc":"Imports a resource file with the given path."},{"args":"path, *args","doc":"<p>Imports a variable file with the given path and optional arguments.\x3c/p>\n<p>Variables imported with this keyword are set into the test suite scope similarly when importing them in the Setting table using the Variables setting. These variables override possible existing variables with the same names. This functionality can thus be used to import new variables, for example, for each test in a test suite.\x3c/p>\n<p>The given path must be absolute. Forward slashes can be used as path separator regardless the operating system.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Import Variables\x3c/td>\n<td>${CURDIR}/variables.py\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Import Variables\x3c/td>\n<td>${CURDIR}/../vars/env.py\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>New in Robot Framework 2.5.4.\x3c/p>","name":"Import Variables","shortdoc":"Imports a variable file with the given path and optional arguments."},{"args":"name, msg=None","doc":"<p>Fails unless the given keyword exists in the current scope.\x3c/p>\n<p>Fails also if there are more than one keywords with the same name. Works both with the short name (e.g. <a href=\"#Log\" class=\"name\">Log\x3c/a>) and the full name (e.g. <span class=\"name\">BuiltIn.Log\x3c/span>).\x3c/p>\n<p>The default error message can be overridden with the <span class=\"name\">msg\x3c/span> argument.\x3c/p>\n<p>New in Robot Framework 2.6. See also <a href=\"#Variable Should Exist\" class=\"name\">Variable Should Exist\x3c/a>.\x3c/p>","name":"Keyword Should Exist","shortdoc":"Fails unless the given keyword exists in the current scope."},{"args":"item, length, msg=None","doc":"<p>Verifies that the length of the given item is correct.\x3c/p>\n<p>The length of the item is got using the <a href=\"#Get Length\" class=\"name\">Get Length\x3c/a> keyword. The default error message can be overridden with the <span class=\"name\">msg\x3c/span> argument.\x3c/p>","name":"Length Should Be","shortdoc":"Verifies that the length of the given item is correct."},{"args":"message, level=INFO, html=False, console=False, repr=False","doc":"<p>Logs the given message with the given level.\x3c/p>\n<p>Valid levels are TRACE, DEBUG, INFO (default), HTML, and WARN. Messages below the current active log level are ignored. See <a href=\"#Set Log Level\" class=\"name\">Set Log Level\x3c/a> keyword and <span class=\"name\">--loglevel\x3c/span> command line option for more details about setting the level.\x3c/p>\n<p>Messages logged with the WARN level will be automatically visible also in the console and in the <span class=\"name\">Test Execution Errors\x3c/span> section in the log file.\x3c/p>\n<p>If the <span class=\"name\">html\x3c/span> argument is given any true value (e.g. any non-empty string), the message will be considered HTML and special characters such as <span class=\"name\">&lt;\x3c/span> in it are not escaped. For example, logging <span class=\"name\">&lt;img src=\"image.png\"&gt;\x3c/span> creates an image when <span class=\"name\">html\x3c/span> is true, but otherwise the message is that exact string. An alternative to using the <span class=\"name\">html\x3c/span> argument is using the <span class=\"name\">HTML\x3c/span> pseudo log level. It logs the message as HTML using the INFO level.\x3c/p>\n<p>If the <span class=\"name\">console\x3c/span> argument is true, the message will be written to the console where test execution was started from in addition to the log file. This keyword always uses the standard output stream and adds a newline after the written message. Use <a href=\"#Log To Console\" class=\"name\">Log To Console\x3c/a> instead if either of these is undesirable,\x3c/p>\n<p>If the <span class=\"name\">repr\x3c/span> argument is true, the given item will be passed through Python's <span class=\"name\">repr()\x3c/span> function before logging it. This is useful, for example, when working with strings or bytes containing invisible characters.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Log\x3c/td>\n<td>Hello, world!\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td># Normal INFO message.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log\x3c/td>\n<td>Warning, world!\x3c/td>\n<td>WARN\x3c/td>\n<td>\x3c/td>\n<td># Warning.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log\x3c/td>\n<td>&lt;b&gt;Hello&lt;/b&gt;, world!\x3c/td>\n<td>html=yes\x3c/td>\n<td>\x3c/td>\n<td># INFO message as HTML.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log\x3c/td>\n<td>&lt;b&gt;Hello&lt;/b&gt;, world!\x3c/td>\n<td>HTML\x3c/td>\n<td>\x3c/td>\n<td># Same as above.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log\x3c/td>\n<td>&lt;b&gt;Hello&lt;/b&gt;, world!\x3c/td>\n<td>DEBUG\x3c/td>\n<td>html=true\x3c/td>\n<td># DEBUG as HTML.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log\x3c/td>\n<td>Hello, console!\x3c/td>\n<td>console=yes\x3c/td>\n<td>\x3c/td>\n<td># Write also to the console.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log\x3c/td>\n<td>Hyvä \\x00\x3c/td>\n<td>repr=yes\x3c/td>\n<td>\x3c/td>\n<td># Logs <span class=\"name\">u'Hyv\\xe4 \\x00'\x3c/span>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See <a href=\"#Log Many\" class=\"name\">Log Many\x3c/a> if you want to log multiple messages in one go, and <a href=\"#Log To Console\" class=\"name\">Log To Console\x3c/a> if you only want to write to the console.\x3c/p>\n<p>Arguments <span class=\"name\">html\x3c/span>, <span class=\"name\">console\x3c/span>, and <span class=\"name\">repr\x3c/span> are new in Robot Framework 2.8.2.\x3c/p>","name":"Log","shortdoc":"Logs the given message with the given level."},{"args":"*messages","doc":"<p>Logs the given messages as separate entries using the INFO level.\x3c/p>\n<p>See <a href=\"#Log\" class=\"name\">Log\x3c/a> and <a href=\"#Log To Console\" class=\"name\">Log To Console\x3c/a> keywords if you want to use alternative log levels, use HTML, or log to the console.\x3c/p>","name":"Log Many","shortdoc":"Logs the given messages as separate entries using the INFO level."},{"args":"message, stream=STDOUT, no_newline=False","doc":"<p>Logs the given message to the console.\x3c/p>\n<p>By default uses the standard output stream. Using the standard error stream is possibly by giving the <span class=\"name\">stream\x3c/span> argument value <span class=\"name\">STDERR\x3c/span> (case-insensitive).\x3c/p>\n<p>By default appends a newline to the logged message. This can be disabled by giving the <span class=\"name\">no_newline\x3c/span> argument any true value (e.g. any non-empty string).\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Log To Console\x3c/td>\n<td>Hello, console!\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log To Console\x3c/td>\n<td>Hello, stderr!\x3c/td>\n<td>STDERR\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log To Console\x3c/td>\n<td>Message starts here and is\x3c/td>\n<td>no_newline=true\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log To Console\x3c/td>\n<td>continued without newline.\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword does not log the message to the normal log file. Use <a href=\"#Log\" class=\"name\">Log\x3c/a> keyword, possibly with argument <span class=\"name\">console\x3c/span>, if that is desired.\x3c/p>\n<p>New in Robot Framework 2.8.2.\x3c/p>","name":"Log To Console","shortdoc":"Logs the given message to the console."},{"args":"level=INFO","doc":"<p>Logs all variables in the current scope with given log level.\x3c/p>","name":"Log Variables","shortdoc":"Logs all variables in the current scope with given log level."},{"args":"","doc":"<p>Does absolutely nothing.\x3c/p>","name":"No Operation","shortdoc":"Does absolutely nothing."},{"args":"message, *tags","doc":"<p>Skips rest of the current test, setup, or teardown with PASS status.\x3c/p>\n<p>This keyword can be used anywhere in the test data, but the place where used affects the behavior:\x3c/p>\n<ul>\n<li>When used in any setup or teardown (suite, test or keyword), passes that setup or teardown. Possible keyword teardowns of the started keywords are executed. Does not affect execution or statuses otherwise.\x3c/li>\n<li>When used in a test outside setup or teardown, passes that particular test case. Possible test and keyword teardowns are executed.\x3c/li>\n\x3c/ul>\n<p>Possible continuable failures before this keyword is used, as well as failures in executed teardowns, will fail the execution.\x3c/p>\n<p>It is mandatory to give a message explaining why execution was passed. By default the message is considered plain text, but starting it with <span class=\"name\">*HTML*\x3c/span> allows using HTML formatting.\x3c/p>\n<p>It is also possible to modify test tags passing tags after the message similarly as with <a href=\"#Fail\" class=\"name\">Fail\x3c/a> keyword. Tags starting with a hyphen (e.g. <span class=\"name\">-regression\x3c/span>) are removed and others added. Tags are modified using <a href=\"#Set Tags\" class=\"name\">Set Tags\x3c/a> and <a href=\"#Remove Tags\" class=\"name\">Remove Tags\x3c/a> internally, and the semantics setting and removing them are the same as with these keywords.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Pass Execution\x3c/td>\n<td>All features available in this version tested.\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Pass Execution\x3c/td>\n<td>Deprecated test.\x3c/td>\n<td>deprecated\x3c/td>\n<td>-regression\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword is typically wrapped to some other keyword, such as <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>, to pass based on a condition. The most common case can be handled also with <a href=\"#Pass Execution If\" class=\"name\">Pass Execution If\x3c/a>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Run Keyword If\x3c/td>\n<td>${rc} &lt; 0\x3c/td>\n<td>Pass Execution\x3c/td>\n<td>Negative values are cool.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Pass Execution If\x3c/td>\n<td>${rc} &lt; 0\x3c/td>\n<td>Negative values are cool.\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Passing execution in the middle of a test, setup or teardown should be used with care. In the worst case it leads to tests that skip all the parts that could actually uncover problems in the tested application. In cases where execution cannot continue do to external factors, it is often safer to fail the test case and make it non-critical.\x3c/p>\n<p>New in Robot Framework 2.8.\x3c/p>","name":"Pass Execution","shortdoc":"Skips rest of the current test, setup, or teardown with PASS status."},{"args":"condition, message, *tags","doc":"<p>Conditionally skips rest of the current test, setup, or teardown with PASS status.\x3c/p>\n<p>A wrapper for <a href=\"#Pass Execution\" class=\"name\">Pass Execution\x3c/a> to skip rest of the current test, setup or teardown based the given <span class=\"name\">condition\x3c/span>. The condition is evaluated similarly as with <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> keyword, and <span class=\"name\">message\x3c/span> and <span class=\"name\">*tags\x3c/span> have same semantics as with <a href=\"#Pass Execution\" class=\"name\">Pass Execution\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>:FOR\x3c/td>\n<td>${var}\x3c/td>\n<td>IN\x3c/td>\n<td>@{VALUES}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Pass Execution If\x3c/td>\n<td>'${var}' == 'EXPECTED'\x3c/td>\n<td>Correct value was found\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Do Something\x3c/td>\n<td>${var}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>New in Robot Framework 2.8.\x3c/p>","name":"Pass Execution If","shortdoc":"Conditionally skips rest of the current test, setup, or teardown with PASS status."},{"args":"*patterns","doc":"<p>Returns each argument string escaped for use as a regular expression.\x3c/p>\n<p>This keyword can be used to escape strings to be used with <a href=\"#Should Match Regexp\" class=\"name\">Should Match Regexp\x3c/a> and <a href=\"#Should Not Match Regexp\" class=\"name\">Should Not Match Regexp\x3c/a> keywords.\x3c/p>\n<p>Escaping is done with Python's re.escape() function.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${escaped} =\x3c/td>\n<td>Regexp Escape\x3c/td>\n<td>${original}\x3c/td>\n\x3c/tr>\n<tr>\n<td>@{strings} =\x3c/td>\n<td>Regexp Escape\x3c/td>\n<td>@{strings}\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Regexp Escape","shortdoc":"Returns each argument string escaped for use as a regular expression."},{"args":"*tags","doc":"<p>Removes given <span class=\"name\">tags\x3c/span> from the current test or all tests in a suite.\x3c/p>\n<p>Tags can be given exactly or using a pattern where '*' matches anything and '?' matches one character.\x3c/p>\n<p>This keyword can affect either one test case or all test cases in a test suite similarly as <a href=\"#Set Tags\" class=\"name\">Set Tags\x3c/a> keyword.\x3c/p>\n<p>The current tags are available as a built-in variable <span class=\"name\">@{TEST TAGS}\x3c/span>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Remove Tags\x3c/td>\n<td>mytag\x3c/td>\n<td>something-*\x3c/td>\n<td>?ython\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See <a href=\"#Set Tags\" class=\"name\">Set Tags\x3c/a> if you want to add certain tags and <a href=\"#Fail\" class=\"name\">Fail\x3c/a> if you want to fail the test case after setting and/or removing tags.\x3c/p>","name":"Remove Tags","shortdoc":"Removes given `tags` from the current test or all tests in a suite."},{"args":"times, name, *args","doc":"<p>Executes the specified keyword multiple times.\x3c/p>\n<p><span class=\"name\">name\x3c/span> and <span class=\"name\">args\x3c/span> define the keyword that is executed similarly as with <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, and <span class=\"name\">times\x3c/span> specifies how many the keyword should be executed. <span class=\"name\">times\x3c/span> can be given as an integer or as a string that can be converted to an integer. It can also have postfix 'times' or 'x' (case and space insensitive) to make the expression easier to read.\x3c/p>\n<p>If <span class=\"name\">times\x3c/span> is zero or negative, the keyword is not executed at all. This keyword fails immediately if any of the execution rounds fails.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Repeat Keyword\x3c/td>\n<td>5 times\x3c/td>\n<td>Goto Previous Page\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Repeat Keyword\x3c/td>\n<td>${var}\x3c/td>\n<td>Some Keyword\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Repeat Keyword","shortdoc":"Executes the specified keyword multiple times."},{"args":"text","doc":"<p>Replaces variables in the given text with their current values.\x3c/p>\n<p>If the text contains undefined variables, this keyword fails. If the given <span class=\"name\">text\x3c/span> contains only a single variable, its value is returned as-is and it can be any object. Otherwise this keyword always returns a string.\x3c/p>\n<p>Example:\x3c/p>\n<p>The file 'template.txt' contains 'Hello ${NAME}!' and variable '${NAME}' has the value 'Robot'.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${template} =\x3c/td>\n<td>Get File\x3c/td>\n<td>${CURDIR}/template.txt\x3c/td>\n\x3c/tr>\n<tr>\n<td>${message} =\x3c/td>\n<td>Replace Variables\x3c/td>\n<td>${template}\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${message}\x3c/td>\n<td>Hello Robot!\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Replace Variables","shortdoc":"Replaces variables in the given text with their current values."},{"args":"*return_values","doc":"<p>Returns from the enclosing user keyword.\x3c/p>\n<p>This keyword can be used to return from a user keyword with PASS status without executing it fully. It is also possible to return values similarly as with the <span class=\"name\">[Return]\x3c/span> setting. For more detailed information about working with the return values, see the User Guide.\x3c/p>\n<p>This keyword is typically wrapped to some other keyword, such as <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a> or <a href=\"#Run Keyword If Test Passed\" class=\"name\">Run Keyword If Test Passed\x3c/a>, to return based on a condition:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Run Keyword If\x3c/td>\n<td>${rc} &lt; 0\x3c/td>\n<td>Return From Keyword\x3c/td>\n\x3c/tr>\n<tr>\n<td>Run Keyword If Test Passed\x3c/td>\n<td>Return From Keyword\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>It is possible to use this keyword to return from a keyword also inside a for loop. That, as well as returning values, is demonstrated by the <span class=\"name\">Find Index\x3c/span> keyword in the following somewhat advanced example. Notice that it is often a good idea to move this kind of complicated logic into a test library.\x3c/p>\n<pre>\n<b>***\x3c/b> Variables <b>***\x3c/b>\n@{LIST} =    foo    baz\n\n<b>***\x3c/b> Test Cases <b>***\x3c/b>\nExample\n    ${index} =    Find Index    baz    @{LIST}\n    Should Be Equal    ${index}    ${1}\n    ${index} =    Find Index    non existing    @{LIST}\n    Should Be Equal    ${index}    ${-1}\n\n<b>***\x3c/b> Keywords <b>***\x3c/b>\nFind Index\n   [Arguments]    ${element}    @{items}\n   ${index} =    Set Variable    ${0}\n   :FOR    ${item}    IN    @{items}\n   \\    Run Keyword If    '${item}' == '${element}'    Return From Keyword    ${index}\n   \\    ${index} =    Set Variable    ${index + 1}\n   Return From Keyword    ${-1}    # Also [Return] would work here.\n\x3c/pre>\n<p>The most common use case, returning based on an expression, can be accomplished directly with <a href=\"#Return From Keyword If\" class=\"name\">Return From Keyword If\x3c/a>. Both of these keywords are new in Robot Framework 2.8.\x3c/p>\n<p>See also <a href=\"#Run Keyword And Return\" class=\"name\">Run Keyword And Return\x3c/a> and <a href=\"#Run Keyword And Return If\" class=\"name\">Run Keyword And Return If\x3c/a>.\x3c/p>","name":"Return From Keyword","shortdoc":"Returns from the enclosing user keyword."},{"args":"condition, *return_values","doc":"<p>Returns from the enclosing user keyword if <span class=\"name\">condition\x3c/span> is true.\x3c/p>\n<p>A wrapper for <a href=\"#Return From Keyword\" class=\"name\">Return From Keyword\x3c/a> to return based on the given condition. The condition is evaluated using the same semantics as with <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> keyword.\x3c/p>\n<p>Given the same example as in <a href=\"#Return From Keyword\" class=\"name\">Return From Keyword\x3c/a>, we can rewrite the <span class=\"name\">Find Index\x3c/span> keyword as follows:\x3c/p>\n<pre>\n<b>***\x3c/b> Keywords <b>***\x3c/b>\nFind Index\n   [Arguments]    ${element}    @{items}\n   ${index} =    Set Variable    ${0}\n   :FOR    ${item}    IN    @{items}\n   \\    Return From Keyword If    '${item}' == '${element}'    ${index}\n   \\    ${index} =    Set Variable    ${index + 1}\n   Return From Keyword    ${-1}    # Also [Return] would work here.\n\x3c/pre>\n<p>See also <a href=\"#Run Keyword And Return\" class=\"name\">Run Keyword And Return\x3c/a> and <a href=\"#Run Keyword And Return If\" class=\"name\">Run Keyword And Return If\x3c/a>.\x3c/p>\n<p>New in Robot Framework 2.8.\x3c/p>","name":"Return From Keyword If","shortdoc":"Returns from the enclosing user keyword if `condition` is true."},{"args":"name, *args","doc":"<p>Executes the given keyword with the given arguments.\x3c/p>\n<p>Because the name of the keyword to execute is given as an argument, it can be a variable and thus set dynamically, e.g. from a return value of another keyword or from the command line.\x3c/p>","name":"Run Keyword","shortdoc":"Executes the given keyword with the given arguments."},{"args":"name, *args","doc":"<p>Runs the keyword and continues execution even if a failure occurs.\x3c/p>\n<p>The keyword name and arguments work as with <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Run Keyword And Continue On Failure\x3c/td>\n<td>Fail\x3c/td>\n<td>This is a stupid example\x3c/td>\n\x3c/tr>\n<tr>\n<td>Log\x3c/td>\n<td>This keyword is executed\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword was added in Robot Framework 2.5. The execution is not continued if the failure is caused by invalid syntax, timeout, or fatal exception.\x3c/p>","name":"Run Keyword And Continue On Failure","shortdoc":"Runs the keyword and continues execution even if a failure occurs."},{"args":"expected_error, name, *args","doc":"<p>Runs the keyword and checks that the expected error occurred.\x3c/p>\n<p>The expected error must be given in the same format as in Robot Framework reports. It can be a pattern containing characters '?', which matches to any single character and '*', which matches to any number of any characters. <span class=\"name\">name\x3c/span> and <span class=\"name\">*args\x3c/span> have same semantics as with <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>.\x3c/p>\n<p>If the expected error occurs, the error message is returned and it can be further processed/tested, if needed. If there is no error, or the error does not match the expected error, this keyword fails.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Run Keyword And Expect Error\x3c/td>\n<td>My error\x3c/td>\n<td>Some Keyword\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n<tr>\n<td>${msg} =\x3c/td>\n<td>Run Keyword And Expect Error\x3c/td>\n<td>*\x3c/td>\n<td>My KW\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Start With\x3c/td>\n<td>${msg}\x3c/td>\n<td>Once upon a time in\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Starting from Robot Framework 2.5 errors caused by invalid syntax, timeouts, or fatal exceptions are not caught by this keyword.\x3c/p>","name":"Run Keyword And Expect Error","shortdoc":"Runs the keyword and checks that the expected error occurred."},{"args":"name, *args","doc":"<p>Runs the given keyword with the given arguments and ignores possible error.\x3c/p>\n<p>This keyword returns two values, so that the first is either 'PASS' or 'FAIL', depending on the status of the executed keyword. The second value is either the return value of the keyword or the received error message. See <a href=\"#Run Keyword And Return Status\" class=\"name\">Run Keyword And Return Status\x3c/a> If you are only interested in the execution status.\x3c/p>\n<p>The keyword name and arguments work as in <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>. See <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a> for a usage example.\x3c/p>\n<p>Starting from Robot Framework 2.5 errors caused by invalid syntax, timeouts, or fatal exceptions are not caught by this keyword.\x3c/p>","name":"Run Keyword And Ignore Error","shortdoc":"Runs the given keyword with the given arguments and ignores possible error."},{"args":"name, *args","doc":"<p>Runs the specified keyword and returns from the enclosing user keyword.\x3c/p>\n<p>The keyword to execute is defined with <span class=\"name\">name\x3c/span> and <span class=\"name\">*args\x3c/span> exactly like with <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>. After running the keyword, returns from the enclosing user keyword and passes possible return value from the executed keyword further. Returning from a keyword has exactly same semantics as with <a href=\"#Return From Keyword\" class=\"name\">Return From Keyword\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Run Keyword And Return\" class=\"name\">Run Keyword And Return\x3c/a>\x3c/td>\n<td><span class=\"name\">My Keyword\x3c/span>\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n<tr>\n<td># Above is equivalent to:\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result} =\x3c/td>\n<td><span class=\"name\">My Keyword\x3c/span>\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n<tr>\n<td><a href=\"#Return From Keyword\" class=\"name\">Return From Keyword\x3c/a>\x3c/td>\n<td>${result}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Use <a href=\"#Run Keyword And Return If\" class=\"name\">Run Keyword And Return If\x3c/a> if you want to run keyword and return based on a condition.\x3c/p>\n<p>New in Robot Framework 2.8.2.\x3c/p>","name":"Run Keyword And Return","shortdoc":"Runs the specified keyword and returns from the enclosing user keyword."},{"args":"condition, name, *args","doc":"<p>Runs the specified keyword and returns from the enclosing user keyword.\x3c/p>\n<p>A wrapper for <a href=\"#Run Keyword And Return\" class=\"name\">Run Keyword And Return\x3c/a> to run and return based on the given <span class=\"name\">condition\x3c/span>. The condition is evaluated using the same semantics as with <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> keyword.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Run Keyword And Return If\" class=\"name\">Run Keyword And Return If\x3c/a>\x3c/td>\n<td>${rc} &gt; 0\x3c/td>\n<td><span class=\"name\">My Keyword\x3c/span>\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td># Above is equivalent to:\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td><a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>\x3c/td>\n<td>${rc} &gt; 0\x3c/td>\n<td><a href=\"#Run Keyword And Return\" class=\"name\">Run Keyword And Return\x3c/a>\x3c/td>\n<td><span class=\"name\">My Keyword \x3c/span>\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Use <a href=\"#Return From Keyword If\" class=\"name\">Return From Keyword If\x3c/a> if you want to return a certain value based on a condition.\x3c/p>\n<p>New in Robot Framework 2.8.2.\x3c/p>","name":"Run Keyword And Return If","shortdoc":"Runs the specified keyword and returns from the enclosing user keyword."},{"args":"name, *args","doc":"<p>Runs the given keyword with given arguments and returns the status as a Boolean value.\x3c/p>\n<p>This keyword returns <span class=\"name\">True\x3c/span> if the keyword that is executed succeeds and <span class=\"name\">False\x3c/span> if it fails. This is useful, for example, in combination with <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>. If you are interested in the error message or return value, use <a href=\"#Run Keyword And Ignore Error\" class=\"name\">Run Keyword And Ignore Error\x3c/a> instead.\x3c/p>\n<p>The keyword name and arguments work as in <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${passed} =\x3c/td>\n<td><a href=\"#Run Keyword And Return Status\" class=\"name\">Run Keyword And Return Status\x3c/a>\x3c/td>\n<td>Keyword\x3c/td>\n<td>args\x3c/td>\n\x3c/tr>\n<tr>\n<td><a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>\x3c/td>\n<td>${passed}\x3c/td>\n<td>Another keyword\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>New in Robot Framework 2.7.6.\x3c/p>","name":"Run Keyword And Return Status","shortdoc":"Runs the given keyword with given arguments and returns the status as a Boolean value."},{"args":"condition, name, *args","doc":"<p>Runs the given keyword with the given arguments, if <span class=\"name\">condition\x3c/span> is true.\x3c/p>\n<p>The given <span class=\"name\">condition\x3c/span> is evaluated similarly as with <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> keyword, and <span class=\"name\">name\x3c/span> and <span class=\"name\">*args\x3c/span> have same semantics as with <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>.\x3c/p>\n<p>Example, a simple if/else construct:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${status}\x3c/td>\n<td>${value} =\x3c/td>\n<td><a href=\"#Run Keyword And Ignore Error\" class=\"name\">Run Keyword And Ignore Error\x3c/a>\x3c/td>\n<td><span class=\"name\">My Keyword\x3c/span>\x3c/td>\n\x3c/tr>\n<tr>\n<td><a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>\x3c/td>\n<td>'${status}' == 'PASS'\x3c/td>\n<td><span class=\"name\">Some Action\x3c/span>\x3c/td>\n<td>arg\x3c/td>\n\x3c/tr>\n<tr>\n<td><a href=\"#Run Keyword Unless\" class=\"name\">Run Keyword Unless\x3c/a>\x3c/td>\n<td>'${status}' == 'PASS'\x3c/td>\n<td><span class=\"name\">Another Action\x3c/span>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>In this example, only either <span class=\"name\">Some Action\x3c/span> or <span class=\"name\">Another Action\x3c/span> is executed, based on the status of <span class=\"name\">My Keyword\x3c/span>. Instead of <a href=\"#Run Keyword And Ignore Error\" class=\"name\">Run Keyword And Ignore Error\x3c/a> you can also use <a href=\"#Run Keyword And Return Status\" class=\"name\">Run Keyword And Return Status\x3c/a>.\x3c/p>\n<p>Starting from Robot version 2.7.4, this keyword supports also optional ELSE and ELSE IF branches. Both of these are defined in <span class=\"name\">*args\x3c/span> and must use exactly format <span class=\"name\">ELSE\x3c/span> or <span class=\"name\">ELSE IF\x3c/span>, respectively. ELSE branches must contain first the name of the keyword to execute and then its possible arguments. ELSE IF branches must first contain a condition, like the first argument to this keyword, and then the keyword to execute and its possible arguments. It is possible to have ELSE branch after ELSE IF and to have multiple ELSE IF branches.\x3c/p>\n<p>Given previous example, if/else construct can also be created like this:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${status}\x3c/td>\n<td>${value} =\x3c/td>\n<td><a href=\"#Run Keyword And Ignore Error\" class=\"name\">Run Keyword And Ignore Error\x3c/a>\x3c/td>\n<td>My Keyword\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td><a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>\x3c/td>\n<td>'${status}' == 'PASS'\x3c/td>\n<td><span class=\"name\">Some Action\x3c/span>\x3c/td>\n<td>arg\x3c/td>\n<td>ELSE\x3c/td>\n<td><span class=\"name\">Another Action\x3c/span>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Using ELSE and/or ELSE IF branches is especially handy if you are interested in the return value. This is illustrated by the example below that also demonstrates using ELSE IF and ELSE together:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${result} =\x3c/td>\n<td><a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>\x3c/td>\n<td>${rc} == 0\x3c/td>\n<td><span class=\"name\">Zero return value\x3c/span>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>ELSE IF\x3c/td>\n<td>0 &lt; ${rc} &lt; 42\x3c/td>\n<td><span class=\"name\">Normal return value\x3c/span>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>ELSE IF\x3c/td>\n<td>${rc} &lt; 0\x3c/td>\n<td><span class=\"name\">Negative return value\x3c/span>\x3c/td>\n<td>${rc}\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>ELSE\x3c/td>\n<td><span class=\"name\">Abnormal return value\x3c/span>\x3c/td>\n<td>${rc}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Notice that ELSE and ELSE IF control arguments must be used explicitly and thus cannot come from variables. If you need to use literal ELSE and ELSE IF strings as arguments, you can either use variables or escape them with a backslash like <span class=\"name\">\\ELSE\x3c/span> and <span class=\"name\">\\ELSE IF\x3c/span>.\x3c/p>\n<p>Starting from Robot Framework 2.8, Python's <a href=\"http://docs.python.org/2/library/os.html\">os\x3c/a> and <a href=\"http://docs.python.org/2/library/sys.html\">sys\x3c/a> modules are automatically imported when evaluating the <span class=\"name\">condition\x3c/span>. Attributes they contain can thus be used in the condition:\x3c/p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a>\x3c/td>\n<td>os.sep == '/'\x3c/td>\n<td><span class=\"name\">Unix Keyword\x3c/span>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>ELSE IF\x3c/td>\n<td>sys.platform.startswith('java')\x3c/td>\n<td><span class=\"name\">Jython Keyword\x3c/span>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>ELSE\x3c/td>\n<td><span class=\"name\">Windows Keyword\x3c/span>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Run Keyword If","shortdoc":"Runs the given keyword with the given arguments, if `condition` is true."},{"args":"name, *args","doc":"<p>Runs the given keyword with the given arguments, if all critical tests passed.\x3c/p>\n<p>This keyword can only be used in suite teardown. Trying to use it in any other place will result in an error.\x3c/p>\n<p>Otherwise, this keyword works exactly like <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, see its documentation for more details.\x3c/p>","name":"Run Keyword If All Critical Tests Passed","shortdoc":"Runs the given keyword with the given arguments, if all critical tests passed."},{"args":"name, *args","doc":"<p>Runs the given keyword with the given arguments, if all tests passed.\x3c/p>\n<p>This keyword can only be used in a suite teardown. Trying to use it anywhere else results in an error.\x3c/p>\n<p>Otherwise, this keyword works exactly like <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, see its documentation for more details.\x3c/p>","name":"Run Keyword If All Tests Passed","shortdoc":"Runs the given keyword with the given arguments, if all tests passed."},{"args":"name, *args","doc":"<p>Runs the given keyword with the given arguments, if any critical tests failed.\x3c/p>\n<p>This keyword can only be used in a suite teardown. Trying to use it anywhere else results in an error.\x3c/p>\n<p>Otherwise, this keyword works exactly like <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, see its documentation for more details.\x3c/p>","name":"Run Keyword If Any Critical Tests Failed","shortdoc":"Runs the given keyword with the given arguments, if any critical tests failed."},{"args":"name, *args","doc":"<p>Runs the given keyword with the given arguments, if one or more tests failed.\x3c/p>\n<p>This keyword can only be used in a suite teardown. Trying to use it anywhere else results in an error.\x3c/p>\n<p>Otherwise, this keyword works exactly like <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, see its documentation for more details.\x3c/p>","name":"Run Keyword If Any Tests Failed","shortdoc":"Runs the given keyword with the given arguments, if one or more tests failed."},{"args":"name, *args","doc":"<p>Runs the given keyword with the given arguments, if the test failed.\x3c/p>\n<p>This keyword can only be used in a test teardown. Trying to use it anywhere else results in an error.\x3c/p>\n<p>Otherwise, this keyword works exactly like <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, see its documentation for more details.\x3c/p>","name":"Run Keyword If Test Failed","shortdoc":"Runs the given keyword with the given arguments, if the test failed."},{"args":"name, *args","doc":"<p>Runs the given keyword with the given arguments, if the test passed.\x3c/p>\n<p>This keyword can only be used in a test teardown. Trying to use it anywhere else results in an error.\x3c/p>\n<p>Otherwise, this keyword works exactly like <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, see its documentation for more details.\x3c/p>","name":"Run Keyword If Test Passed","shortdoc":"Runs the given keyword with the given arguments, if the test passed."},{"args":"name, *args","doc":"<p>Runs the given keyword if either a test or a keyword timeout has occurred.\x3c/p>\n<p>This keyword can only be used in a test teardown. Trying to use it anywhere else results in an error.\x3c/p>\n<p>Otherwise, this keyword works exactly like <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>, see its documentation for more details.\x3c/p>\n<p>Available in Robot Framework 2.5 and newer.\x3c/p>","name":"Run Keyword If Timeout Occurred","shortdoc":"Runs the given keyword if either a test or a keyword timeout has occurred."},{"args":"condition, name, *args","doc":"<p>Runs the given keyword with the given arguments, if <span class=\"name\">condition\x3c/span> is false.\x3c/p>\n<p>See <a href=\"#Run Keyword If\" class=\"name\">Run Keyword If\x3c/a> for more information and an example.\x3c/p>","name":"Run Keyword Unless","shortdoc":"Runs the given keyword with the given arguments, if `condition` is false."},{"args":"*keywords","doc":"<p>Executes all the given keywords in a sequence.\x3c/p>\n<p>This keyword is mainly useful in setups and teardowns when they need to take care of multiple actions and creating a new higher level user keyword would be an overkill.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Run Keywords\x3c/td>\n<td>Initialize database\x3c/td>\n<td>Start servers\x3c/td>\n<td>Clear logs\x3c/td>\n\x3c/tr>\n<tr>\n<td>Run Keywords\x3c/td>\n<td>${KW 1}\x3c/td>\n<td>${KW 2}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Run Keywords\x3c/td>\n<td>@{KEYWORDS}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>In this example, we call <a href=\"#Run Keywords\" class=\"name\">Run Keywords\x3c/a> with three different combination of arguments. Keyword names and arguments can come from variables, as demonstrated in the second and third row.\x3c/p>\n<p>Starting from Robot Framework 2.7.6, keywords can also be run with arguments using upper case <span class=\"name\">AND\x3c/span> as a separator between keywords. The keywords are executed so that the first argument is the first keyword and proceeding arguments until the first <span class=\"name\">AND\x3c/span> are arguments to it. First argument after the first <span class=\"name\">AND\x3c/span> is the second keyword and proceeding arguments until the next <span class=\"name\">AND\x3c/span> are its arguments. And so on.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Run Keywords\x3c/td>\n<td>Initialize database\x3c/td>\n<td>db1\x3c/td>\n<td>AND\x3c/td>\n<td>Start servers\x3c/td>\n<td>server1\x3c/td>\n<td>server2\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Run Keywords\x3c/td>\n<td>Initialize database\x3c/td>\n<td>${DB NAME}\x3c/td>\n<td>AND\x3c/td>\n<td>Start servers\x3c/td>\n<td>@{SERVERS}\x3c/td>\n<td>AND\x3c/td>\n<td>Clear logs\x3c/td>\n\x3c/tr>\n<tr>\n<td>Run Keywords\x3c/td>\n<td>${KW}\x3c/td>\n<td>AND\x3c/td>\n<td>@{KW WITH ARGS}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Notice that the <span class=\"name\">AND\x3c/span> control argument must be used explicitly and thus cannot itself come from a variable. If you need to use literal <span class=\"name\">AND\x3c/span> string as argument, you can either use variables or escape it with a backslash like <span class=\"name\">\\AND\x3c/span>.\x3c/p>","name":"Run Keywords","shortdoc":"Executes all the given keywords in a sequence."},{"args":"name, *values","doc":"<p>Makes a variable available globally in all tests and suites.\x3c/p>\n<p>Variables set with this keyword are globally available in all test cases and suites executed after setting them. Setting variables with this keyword thus has the same effect as creating from the command line using the options '--variable' or '--variablefile'. Because this keyword can change variables everywhere, it should be used with care.\x3c/p>\n<p>See <a href=\"#Set Suite Variable\" class=\"name\">Set Suite Variable\x3c/a> for more information and examples.\x3c/p>","name":"Set Global Variable","shortdoc":"Makes a variable available globally in all tests and suites."},{"args":"*libraries","doc":"<p>Sets the resolution order to use when a name matches multiple keywords.\x3c/p>\n<p>The library search order is used to resolve conflicts when a keyword name in the test data matches multiple keywords. The first library (or resource, see below) containing the keyword is selected and that keyword implementation used. If the keyword is not found from any library (or resource), test executing fails the same way as when the search order is not set.\x3c/p>\n<p>When this keyword is used, there is no need to use the long <span class=\"name\">LibraryName.Keyword Name\x3c/span> notation.  For example, instead of having\x3c/p>\n<table border=\"1\">\n<tr>\n<td>MyLibrary.Keyword\x3c/td>\n<td>arg\x3c/td>\n\x3c/tr>\n<tr>\n<td>MyLibrary.Another Keyword\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>MyLibrary.Keyword\x3c/td>\n<td>xxx\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>you can have\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Library Search Order\x3c/td>\n<td>MyLibrary\x3c/td>\n\x3c/tr>\n<tr>\n<td>Keyword\x3c/td>\n<td>arg\x3c/td>\n\x3c/tr>\n<tr>\n<td>Another Keyword\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Keyword\x3c/td>\n<td>xxx\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Starting from Robot Framework 2.6.2 this keyword can be used also to set the order of keywords in different resource files. In this case resource names must be given without paths or extensions like:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Library Search Order\x3c/td>\n<td>resource\x3c/td>\n<td>another_resource\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p><b>NOTE:\x3c/b>\x3c/p>\n<ul>\n<li>The search order is valid only in the suite where this keywords is used.\x3c/li>\n<li>Keywords in resources always have higher priority than keywords in libraries regardless the search order.\x3c/li>\n<li>The old order is returned and can be used to reset the search order later.\x3c/li>\n<li>Starting from RF 2.6.2, library and resource names in the search order are both case and space insensitive.\x3c/li>\n\x3c/ul>","name":"Set Library Search Order","shortdoc":"Sets the resolution order to use when a name matches multiple keywords."},{"args":"level","doc":"<p>Sets the log threshold to the specified level and returns the old level.\x3c/p>\n<p>Messages below the level will not logged. The default logging level is INFO, but it can be overridden with the command line option '--loglevel'.\x3c/p>\n<p>The available levels: TRACE, DEBUG, INFO (default), WARN and NONE (no logging).\x3c/p>","name":"Set Log Level","shortdoc":"Sets the log threshold to the specified level and returns the old level."},{"args":"doc, append=False, top=False","doc":"<p>Sets documentation for the current test suite.\x3c/p>\n<p>By default the possible existing documentation is overwritten, but this can be changed using the optional <span class=\"name\">append\x3c/span> argument similarly as with <a href=\"#Set Test Message\" class=\"name\">Set Test Message\x3c/a> keyword.\x3c/p>\n<p>This keyword sets the documentation of the current suite by default. If the optional <span class=\"name\">top\x3c/span> argument is given any value considered <span class=\"name\">true\x3c/span> in Python, for example, any non-empty string, the documentation of the top level suite is altered instead.\x3c/p>\n<p>The documentation of the current suite is available as a built-in variable <span class=\"name\">${SUITE DOCUMENTATION}\x3c/span>.\x3c/p>\n<p>New in Robot Framework 2.7. Support for <span class=\"name\">append\x3c/span> and <span class=\"name\">top\x3c/span> were added in 2.7.7.\x3c/p>","name":"Set Suite Documentation","shortdoc":"Sets documentation for the current test suite."},{"args":"name, value, append=False, top=False","doc":"<p>Sets metadata for the current test suite.\x3c/p>\n<p>By default possible existing metadata values are overwritten, but this can be changed using the optional <span class=\"name\">append\x3c/span> argument similarly as with <a href=\"#Set Test Message\" class=\"name\">Set Test Message\x3c/a> keyword.\x3c/p>\n<p>This keyword sets the metadata of the current suite by default. If the optional <span class=\"name\">top\x3c/span> argument is given any value considered <span class=\"name\">true\x3c/span> in Python, for example, any non-empty string, the metadata of the top level suite is altered instead.\x3c/p>\n<p>The metadata of the current suite is available as a built-in variable <span class=\"name\">${SUITE METADATA}\x3c/span> in a Python dictionary. Notice that modifying this variable directly has no effect on the actual metadata the suite has.\x3c/p>\n<p>New in Robot Framework 2.7.4. Support for <span class=\"name\">append\x3c/span> and <span class=\"name\">top\x3c/span> were added in 2.7.7.\x3c/p>","name":"Set Suite Metadata","shortdoc":"Sets metadata for the current test suite."},{"args":"name, *values","doc":"<p>Makes a variable available everywhere within the scope of the current suite.\x3c/p>\n<p>Variables set with this keyword are available everywhere within the scope of the currently executed test suite. Setting variables with this keyword thus has the same effect as creating them using the Variable table in the test data file or importing them from variable files. Other test suites, including possible child test suites, will not see variables set with this keyword.\x3c/p>\n<p>The name of the variable can be given either as a normal variable name (e.g. <span class=\"name\">${NAME}\x3c/span>) or in escaped format as <span class=\"name\">\\${NAME}\x3c/span> or <span class=\"name\">$NAME\x3c/span>.\x3c/p>\n<p>If a variable already exists within the new scope, its value will be overwritten. Otherwise a new variable is created. If a variable already exists within the current scope, the value can be left empty and the variable within the new scope gets the value within the current scope.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Suite Variable\x3c/td>\n<td>${GREET}\x3c/td>\n<td>Hello, world!\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Suite Variable\x3c/td>\n<td>@{LIST}\x3c/td>\n<td>First item\x3c/td>\n<td>Second item\x3c/td>\n\x3c/tr>\n<tr>\n<td>${ID} =\x3c/td>\n<td>Get ID\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Suite Variable\x3c/td>\n<td>${ID}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>To override an existing value with an empty value, use built-in variables <span class=\"name\">${EMPTY}\x3c/span> or <span class=\"name\">@{EMPTY}\x3c/span>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Suite Variable\x3c/td>\n<td>${GREET}\x3c/td>\n<td>${EMPTY}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Suite Variable\x3c/td>\n<td>@{LIST}\x3c/td>\n<td>@{EMPTY}\x3c/td>\n<td># New in RF 2.7.4\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p><b>NOTE:\x3c/b> If the variable has value which itself is a variable (escaped or not), you must always use the escaped format to reset the variable:\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${NAME} =\x3c/td>\n<td>Set Variable\x3c/td>\n<td>\\${var}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Suite Variable\x3c/td>\n<td>${NAME}\x3c/td>\n<td>value\x3c/td>\n<td># Sets variable ${var}\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Suite Variable\x3c/td>\n<td>\\${NAME}\x3c/td>\n<td>value\x3c/td>\n<td># Sets variable ${NAME}\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This limitation applies also to <span class=\"name\">Set Test/Suite/Global Variable\x3c/span>, <span class=\"name\">Variable Should (Not) Exist\x3c/span>, and <a href=\"#Get Variable Value\" class=\"name\">Get Variable Value\x3c/a> keywords.\x3c/p>","name":"Set Suite Variable","shortdoc":"Makes a variable available everywhere within the scope of the current suite."},{"args":"*tags","doc":"<p>Adds given <span class=\"name\">tags\x3c/span> for the current test or all tests in a suite.\x3c/p>\n<p>When this keyword is used inside a test case, that test gets the specified tags and other tests are not affected.\x3c/p>\n<p>If this keyword is used in a suite setup, all test cases in that suite, recursively, gets the given tags. It is a failure to use this keyword in a suite teardown.\x3c/p>\n<p>The current tags are available as a built-in variable <span class=\"name\">@{TEST TAGS}\x3c/span>.\x3c/p>\n<p>See <a href=\"#Remove Tags\" class=\"name\">Remove Tags\x3c/a> if you want to remove certain tags and <a href=\"#Fail\" class=\"name\">Fail\x3c/a> if you want to fail the test case after setting and/or removing tags.\x3c/p>","name":"Set Tags","shortdoc":"Adds given `tags` for the current test or all tests in a suite."},{"args":"doc, append=False","doc":"<p>Sets documentation for the current test case.\x3c/p>\n<p>By default the possible existing documentation is overwritten, but this can be changed using the optional <span class=\"name\">append\x3c/span> argument similarly as with <a href=\"#Set Test Message\" class=\"name\">Set Test Message\x3c/a> keyword.\x3c/p>\n<p>The current test documentation is available as a built-in variable <span class=\"name\">${TEST DOCUMENTATION}\x3c/span>. This keyword can not be used in suite setup or suite teardown.\x3c/p>\n<p>New in Robot Framework 2.7. Support for <span class=\"name\">append\x3c/span> was added in 2.7.7.\x3c/p>","name":"Set Test Documentation","shortdoc":"Sets documentation for the current test case."},{"args":"message, append=False","doc":"<p>Sets message for the current test case.\x3c/p>\n<p>If the optional <span class=\"name\">append\x3c/span> argument is given any value considered <span class=\"name\">true\x3c/span> in Python, for example, any non-empty string, the given <span class=\"name\">message\x3c/span> is added after the possible earlier message by joining the messages with a space.\x3c/p>\n<p>In test teardown this keyword can alter the possible failure message, but otherwise failures override messages set by this keyword. Notice that in teardown the initial message is available as a built-in variable <span class=\"name\">${TEST MESSAGE}\x3c/span>.\x3c/p>\n<p>It is possible to use HTML format in the message by starting the message with <span class=\"name\">*HTML*\x3c/span>.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Test Message\x3c/td>\n<td>My message\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Test Message\x3c/td>\n<td>is continued.\x3c/td>\n<td>append=yes\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${TEST MESSAGE}\x3c/td>\n<td>My message is continued.\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Test Message\x3c/td>\n<td><span class=\"name\">*\x3c/span>HTML<span class=\"name\">*\x3c/span> &lt;b&gt;Hello!&lt;/b&gt;\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword can not be used in suite setup or suite teardown.\x3c/p>\n<p>New in Robot Framework 2.5. Support for <span class=\"name\">append\x3c/span> was added in 2.7.7 and HTML support in 2.8.\x3c/p>","name":"Set Test Message","shortdoc":"Sets message for the current test case."},{"args":"name, *values","doc":"<p>Makes a variable available everywhere within the scope of the current test.\x3c/p>\n<p>Variables set with this keyword are available everywhere within the scope of the currently executed test case. For example, if you set a variable in a user keyword, it is available both in the test case level and also in all other user keywords used in the current test. Other test cases will not see variables set with this keyword.\x3c/p>\n<p>See <a href=\"#Set Suite Variable\" class=\"name\">Set Suite Variable\x3c/a> for more information and examples.\x3c/p>","name":"Set Test Variable","shortdoc":"Makes a variable available everywhere within the scope of the current test."},{"args":"*values","doc":"<p>Returns the given values which can then be assigned to a variables.\x3c/p>\n<p>This keyword is mainly used for setting scalar variables. Additionally it can be used for converting a scalar variable containing a list to a list variable or to multiple scalar variables. It is recommended to use <a href=\"#Create List\" class=\"name\">Create List\x3c/a> when creating new lists.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${hi} =\x3c/td>\n<td>Set Variable\x3c/td>\n<td>Hello, world!\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${hi2} =\x3c/td>\n<td>Set Variable\x3c/td>\n<td>I said: ${hi}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${var1}\x3c/td>\n<td>${var2} =\x3c/td>\n<td>Set Variable\x3c/td>\n<td>Hello\x3c/td>\n<td>world\x3c/td>\n\x3c/tr>\n<tr>\n<td>@{list} =\x3c/td>\n<td>Set Variable\x3c/td>\n<td>${list with some items}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${item1}\x3c/td>\n<td>${item2} =\x3c/td>\n<td>Set Variable\x3c/td>\n<td>${list with 2 items}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Variables created with this keyword are available only in the scope where they are created. See <a href=\"#Set Global Variable\" class=\"name\">Set Global Variable\x3c/a>, <a href=\"#Set Test Variable\" class=\"name\">Set Test Variable\x3c/a> and <a href=\"#Set Suite Variable\" class=\"name\">Set Suite Variable\x3c/a> for information on how to set variables so that they are available also in a larger scope.\x3c/p>","name":"Set Variable","shortdoc":"Returns the given values which can then be assigned to a variables."},{"args":"condition, *values","doc":"<p>Sets variable based on the given condition.\x3c/p>\n<p>The basic usage is giving a condition and two values. The given condition is first evaluated the same way as with the <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> keyword. If the condition is true, then the first value is returned, and otherwise the second value is returned. The second value can also be omitted, in which case it has a default value None. This usage is illustrated in the examples below, where <span class=\"name\">${rc}\x3c/span> is assumed to be zero.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${var1} =\x3c/td>\n<td>Set Variable If\x3c/td>\n<td>${rc} == 0\x3c/td>\n<td>zero\x3c/td>\n<td>nonzero\x3c/td>\n\x3c/tr>\n<tr>\n<td>${var2} =\x3c/td>\n<td>Set Variable If\x3c/td>\n<td>${rc} &gt; 0\x3c/td>\n<td>value1\x3c/td>\n<td>value2\x3c/td>\n\x3c/tr>\n<tr>\n<td>${var3} =\x3c/td>\n<td>Set Variable If\x3c/td>\n<td>${rc} &gt; 0\x3c/td>\n<td>whatever\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>=&gt;\x3c/p>\n<pre>\n${var1} = 'zero'\n${var2} = 'value2'\n${var3} = None\n\x3c/pre>\n<p>It is also possible to have 'Else If' support by replacing the second value with another condition, and having two new values after it. If the first condition is not true, the second is evaluated and one of the values after it is returned based on its truth value. This can be continued by adding more conditions without a limit.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${var} =\x3c/td>\n<td>Set Variable If\x3c/td>\n<td>${rc} == 0\x3c/td>\n<td>zero\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>${rc} &gt; 0\x3c/td>\n<td>greater than zero\x3c/td>\n<td>less then zero\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${var} =\x3c/td>\n<td>Set Variable If\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>${rc} == 0\x3c/td>\n<td>zero\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>${rc} == 1\x3c/td>\n<td>one\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>${rc} == 2\x3c/td>\n<td>two\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>${rc} &gt; 2\x3c/td>\n<td>greater than two\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>${rc} &lt; 0\x3c/td>\n<td>less than zero\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Use <a href=\"#Get Variable Value\" class=\"name\">Get Variable Value\x3c/a> if you need to set variables dynamically based on whether a variable exist or not.\x3c/p>","name":"Set Variable If","shortdoc":"Sets variable based on the given condition."},{"args":"item, msg=None","doc":"<p>Verifies that the given item is empty.\x3c/p>\n<p>The length of the item is got using the <a href=\"#Get Length\" class=\"name\">Get Length\x3c/a> keyword. The default error message can be overridden with the <span class=\"name\">msg\x3c/span> argument.\x3c/p>","name":"Should Be Empty","shortdoc":"Verifies that the given item is empty."},{"args":"first, second, msg=None, values=True","doc":"<p>Fails if the given objects are unequal.\x3c/p>\n<ul>\n<li>If <span class=\"name\">msg\x3c/span> is not given, the error message is 'first != second'.\x3c/li>\n<li>If <span class=\"name\">msg\x3c/span> is given and <span class=\"name\">values\x3c/span> is either Boolean False or the string 'False' or 'No Values', the error message is simply <span class=\"name\">msg\x3c/span>.\x3c/li>\n<li>Otherwise the error message is '<span class=\"name\">msg\x3c/span>: <span class=\"name\">first\x3c/span> != <span class=\"name\">second\x3c/span>'.\x3c/li>\n\x3c/ul>","name":"Should Be Equal","shortdoc":"Fails if the given objects are unequal."},{"args":"first, second, msg=None, values=True, base=None","doc":"<p>Fails if objects are unequal after converting them to integers.\x3c/p>\n<p>See <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a> for information how to convert integers from other bases than 10 using <span class=\"name\">base\x3c/span> argument or <span class=\"name\">0b/0o/0x\x3c/span> prefixes.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>42\x3c/td>\n<td>${42}\x3c/td>\n<td>Error message\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>ABCD\x3c/td>\n<td>abcd\x3c/td>\n<td>base=16\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>0b1011\x3c/td>\n<td>11\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Should Be Equal As Integers","shortdoc":"Fails if objects are unequal after converting them to integers."},{"args":"first, second, msg=None, values=True, precision=6","doc":"<p>Fails if objects are unequal after converting them to real numbers.\x3c/p>\n<p>The conversion is done with <a href=\"#Convert To Number\" class=\"name\">Convert To Number\x3c/a> keyword using the given <span class=\"name\">precision\x3c/span>. The support for giving precision was added in Robot Framework 2.6, in earlier versions it was hard-coded to 6.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As Numbers\x3c/td>\n<td>${x}\x3c/td>\n<td>1.1\x3c/td>\n<td>\x3c/td>\n<td># Passes if ${x} is 1.1\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Numbers\x3c/td>\n<td>1.123\x3c/td>\n<td>1.1\x3c/td>\n<td>precision=1\x3c/td>\n<td># Passes\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Numbers\x3c/td>\n<td>1.123\x3c/td>\n<td>1.4\x3c/td>\n<td>precision=0\x3c/td>\n<td># Passes\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Numbers\x3c/td>\n<td>112.3\x3c/td>\n<td>75\x3c/td>\n<td>precision=-2\x3c/td>\n<td># Passes\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>As discussed in the documentation of <a href=\"#Convert To Number\" class=\"name\">Convert To Number\x3c/a>, machines generally cannot store floating point numbers accurately. Because of this limitation, comparing floats for equality is problematic and a correct approach to use depends on the context. This keyword uses a very naive approach of rounding the numbers before comparing them, which is both prone to rounding errors and does not work very well if numbers are really big or small. For more information about comparing floats, and ideas on how to implement your own context specific comparison algorithm, see <a href=\"http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/\">http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/\x3c/a>.\x3c/p>\n<p>See <a href=\"#Should Not Be Equal As Numbers\" class=\"name\">Should Not Be Equal As Numbers\x3c/a> for a negative version of this keyword and <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Be Equal As Numbers","shortdoc":"Fails if objects are unequal after converting them to real numbers."},{"args":"first, second, msg=None, values=True","doc":"<p>Fails if objects are unequal after converting them to strings.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Be Equal As Strings","shortdoc":"Fails if objects are unequal after converting them to strings."},{"args":"condition, msg=None","doc":"<p>Fails if the given condition is not true.\x3c/p>\n<p>If <span class=\"name\">condition\x3c/span> is a string (e.g. <span class=\"name\">${rc} &lt; 10\x3c/span>), it is evaluated as a Python expression using the built-in <span class=\"name\">eval\x3c/span> function and the keyword status is decided based on the result. If a non-string item is given, the status is got directly from its <a href=\"http://docs.python.org/2/library/stdtypes.html#truth\">truth value\x3c/a>.\x3c/p>\n<p>The default error message (<span class=\"name\">&lt;condition&gt; should be true\x3c/span>) is not very informative, but it can be overridden with the <span class=\"name\">msg\x3c/span> argument.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Be True\x3c/td>\n<td>${rc} &lt; 10\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be True\x3c/td>\n<td>'${status}' == 'PASS'\x3c/td>\n<td># Strings must be quoted\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be True\x3c/td>\n<td>${number}\x3c/td>\n<td># Passes if ${number} is not zero\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be True\x3c/td>\n<td>${list}\x3c/td>\n<td># Passes if ${list} is not empty\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Starting from Robot Framework 2.8, <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> automatically imports Python's <a href=\"http://docs.python.org/2/library/os.html\">os\x3c/a> and <a href=\"http://docs.python.org/2/library/sys.html\">sys\x3c/a> modules that contain several useful attributes:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Be True\x3c/td>\n<td>os.linesep == '\\n'\x3c/td>\n<td># Unixy\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be True\x3c/td>\n<td>os.linesep == '\\r\\n'\x3c/td>\n<td># Windows\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be True\x3c/td>\n<td>sys.platform == 'darwin'\x3c/td>\n<td># OS X\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be True\x3c/td>\n<td>sys.platform.startswith('java')\x3c/td>\n<td># Jython\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Should Be True","shortdoc":"Fails if the given condition is not true."},{"args":"item1, item2, msg=None, values=True","doc":"<p>Fails if <span class=\"name\">item1\x3c/span> does not contain <span class=\"name\">item2\x3c/span> one or more times.\x3c/p>\n<p>Works with strings, lists, and anything that supports Python's <span class=\"name\">in\x3c/span> keyword. See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>PASS\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${some_list}\x3c/td>\n<td>value\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Should Contain","shortdoc":"Fails if `item1` does not contain `item2` one or more times."},{"args":"item1, item2, count, msg=None","doc":"<p>Fails if <span class=\"name\">item1\x3c/span> does not contain <span class=\"name\">item2\x3c/span> <span class=\"name\">count\x3c/span> times.\x3c/p>\n<p>Works with strings, lists and all objects that <a href=\"#Get Count\" class=\"name\">Get Count\x3c/a> works with. The default error message can be overridden with <span class=\"name\">msg\x3c/span> and the actual count is always logged.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Contain X Times\x3c/td>\n<td>${output}\x3c/td>\n<td>hello\x3c/td>\n<td>2\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain X Times\x3c/td>\n<td>${some list}\x3c/td>\n<td>value\x3c/td>\n<td>3\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Should Contain X Times","shortdoc":"Fails if `item1` does not contain `item2` `count` times."},{"args":"str1, str2, msg=None, values=True","doc":"<p>Fails if the string <span class=\"name\">str1\x3c/span> does not end with the string <span class=\"name\">str2\x3c/span>.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should End With","shortdoc":"Fails if the string `str1` does not end with the string `str2`."},{"args":"string, pattern, msg=None, values=True","doc":"<p>Fails unless the given <span class=\"name\">string\x3c/span> matches the given <span class=\"name\">pattern\x3c/span>.\x3c/p>\n<p>Pattern matching is similar as matching files in a shell, and it is always case-sensitive. In the pattern, '*' matches to anything and '?' matches to any single character.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Match","shortdoc":"Fails unless the given `string` matches the given `pattern`."},{"args":"string, pattern, msg=None, values=True","doc":"<p>Fails if <span class=\"name\">string\x3c/span> does not match <span class=\"name\">pattern\x3c/span> as a regular expression.\x3c/p>\n<p>Regular expression check is implemented using the Python <a href=\"http://docs.python.org/2/library/re.html\">re module\x3c/a>. Python's regular expression syntax is derived from Perl, and it is thus also very similar to the syntax used, for example, in Java, Ruby and .NET.\x3c/p>\n<p>Things to note about the regexp syntax in Robot Framework test data:\x3c/p>\n<p>1) Backslash is an escape character in the test data, and possible backslashes in the pattern must thus be escaped with another backslash (e.g. '\\\\d\\\\w+').\x3c/p>\n<p>2) Strings that may contain special characters, but should be handled as literal strings, can be escaped with the <a href=\"#Regexp Escape\" class=\"name\">Regexp Escape\x3c/a> keyword.\x3c/p>\n<p>3) The given pattern does not need to match the whole string. For example, the pattern 'ello' matches the string 'Hello world!'. If a full match is needed, the '^' and '$' characters can be used to denote the beginning and end of the string, respectively. For example, '^ello$' only matches the exact string 'ello'.\x3c/p>\n<p>4) Possible flags altering how the expression is parsed (e.g. re.IGNORECASE, re.MULTILINE) can be set by prefixing the pattern with the '(?iLmsux)' group (e.g. '(?im)pattern'). The available flags are 'IGNORECASE': 'i', 'MULTILINE': 'm', 'DOTALL': 's', 'VERBOSE': 'x', 'UNICODE': 'u', and 'LOCALE': 'L'.\x3c/p>\n<p>If this keyword passes, it returns the portion of the string that matched the pattern. Additionally, the possible captured groups are returned.\x3c/p>\n<p>See the <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> keyword for an explanation on how to override the default error message with the <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span> arguments.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Match Regexp\x3c/td>\n<td>${output}\x3c/td>\n<td>\\\\d{6}\x3c/td>\n<td># Output contains six numbers\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Match Regexp\x3c/td>\n<td>${output}\x3c/td>\n<td>^\\\\d{6}$\x3c/td>\n<td># Six numbers and nothing more\x3c/td>\n\x3c/tr>\n<tr>\n<td>${ret} =\x3c/td>\n<td>Should Match Regexp\x3c/td>\n<td>Foo: 42\x3c/td>\n<td>(?i)foo: \\\\d+\x3c/td>\n\x3c/tr>\n<tr>\n<td>${match}\x3c/td>\n<td>${group1}\x3c/td>\n<td>${group2} =\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>...\x3c/td>\n<td>Should Match Regexp\x3c/td>\n<td>Bar: 43\x3c/td>\n<td>(Foo|Bar): (\\\\d+)\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>=&gt;\x3c/p>\n<pre>\n${ret} = 'Foo: 42'\n${match} = 'Bar: 43'\n${group1} = 'Bar'\n${group2} = '43'\n\x3c/pre>","name":"Should Match Regexp","shortdoc":"Fails if `string` does not match `pattern` as a regular expression."},{"args":"item, msg=None","doc":"<p>Verifies that the given item is not empty.\x3c/p>\n<p>The length of the item is got using the <a href=\"#Get Length\" class=\"name\">Get Length\x3c/a> keyword. The default error message can be overridden with the <span class=\"name\">msg\x3c/span> argument.\x3c/p>","name":"Should Not Be Empty","shortdoc":"Verifies that the given item is not empty."},{"args":"first, second, msg=None, values=True","doc":"<p>Fails if the given objects are equal.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Not Be Equal","shortdoc":"Fails if the given objects are equal."},{"args":"first, second, msg=None, values=True, base=None","doc":"<p>Fails if objects are equal after converting them to integers.\x3c/p>\n<p>See <a href=\"#Convert To Integer\" class=\"name\">Convert To Integer\x3c/a> for information how to convert integers from other bases than 10 using <span class=\"name\">base\x3c/span> argument or <span class=\"name\">0b/0o/0x\x3c/span> prefixes.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>\n<p>See <a href=\"#Should Be Equal As Integers\" class=\"name\">Should Be Equal As Integers\x3c/a> for some usage examples.\x3c/p>","name":"Should Not Be Equal As Integers","shortdoc":"Fails if objects are equal after converting them to integers."},{"args":"first, second, msg=None, values=True, precision=6","doc":"<p>Fails if objects are equal after converting them to real numbers.\x3c/p>\n<p>The conversion is done with <a href=\"#Convert To Number\" class=\"name\">Convert To Number\x3c/a> keyword using the given <span class=\"name\">precision\x3c/span>. The support for giving precision was added in Robot Framework 2.6, in earlier versions it was hard-coded to 6.\x3c/p>\n<p>See <a href=\"#Should Be Equal As Numbers\" class=\"name\">Should Be Equal As Numbers\x3c/a> for examples on how to use <span class=\"name\">precision\x3c/span> and why it does not always work as expected. See also <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Not Be Equal As Numbers","shortdoc":"Fails if objects are equal after converting them to real numbers."},{"args":"first, second, msg=None, values=True","doc":"<p>Fails if objects are equal after converting them to strings.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Not Be Equal As Strings","shortdoc":"Fails if objects are equal after converting them to strings."},{"args":"condition, msg=None","doc":"<p>Fails if the given condition is true.\x3c/p>\n<p>See <a href=\"#Should Be True\" class=\"name\">Should Be True\x3c/a> for details about how <span class=\"name\">condition\x3c/span> is evaluated and how <span class=\"name\">msg\x3c/span> can be used to override the default error message.\x3c/p>","name":"Should Not Be True","shortdoc":"Fails if the given condition is true."},{"args":"item1, item2, msg=None, values=True","doc":"<p>Fails if <span class=\"name\">item1\x3c/span> contains <span class=\"name\">item2\x3c/span> one or more times.\x3c/p>\n<p>Works with strings, lists, and anything that supports Python's 'in' keyword. See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Should Not Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>FAILED\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Not Contain\x3c/td>\n<td>${some_list}\x3c/td>\n<td>value\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Should Not Contain","shortdoc":"Fails if `item1` contains `item2` one or more times."},{"args":"str1, str2, msg=None, values=True","doc":"<p>Fails if the string <span class=\"name\">str1\x3c/span> ends with the string <span class=\"name\">str2\x3c/span>.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Not End With","shortdoc":"Fails if the string `str1` ends with the string `str2`."},{"args":"string, pattern, msg=None, values=True","doc":"<p>Fails if the given <span class=\"name\">string\x3c/span> matches the given <span class=\"name\">pattern\x3c/span>.\x3c/p>\n<p>Pattern matching is similar as matching files in a shell, and it is always case-sensitive. In the pattern '*' matches to anything and '?' matches to any single character.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Not Match","shortdoc":"Fails if the given `string` matches the given `pattern`."},{"args":"string, pattern, msg=None, values=True","doc":"<p>Fails if <span class=\"name\">string\x3c/span> matches <span class=\"name\">pattern\x3c/span> as a regular expression.\x3c/p>\n<p>See <a href=\"#Should Match Regexp\" class=\"name\">Should Match Regexp\x3c/a> for more information about arguments.\x3c/p>","name":"Should Not Match Regexp","shortdoc":"Fails if `string` matches `pattern` as a regular expression."},{"args":"str1, str2, msg=None, values=True","doc":"<p>Fails if the string <span class=\"name\">str1\x3c/span> starts with the string <span class=\"name\">str2\x3c/span>.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Not Start With","shortdoc":"Fails if the string `str1` starts with the string `str2`."},{"args":"str1, str2, msg=None, values=True","doc":"<p>Fails if the string <span class=\"name\">str1\x3c/span> does not start with the string <span class=\"name\">str2\x3c/span>.\x3c/p>\n<p>See <a href=\"#Should Be Equal\" class=\"name\">Should Be Equal\x3c/a> for an explanation on how to override the default error message with <span class=\"name\">msg\x3c/span> and <span class=\"name\">values\x3c/span>.\x3c/p>","name":"Should Start With","shortdoc":"Fails if the string `str1` does not start with the string `str2`."},{"args":"time_, reason=None","doc":"<p>Pauses the test executed for the given time.\x3c/p>\n<p><span class=\"name\">time\x3c/span> may be either a number or a time string. Time strings are in a format such as '1 day 2 hours 3 minutes 4 seconds 5milliseconds' or '1d 2h 3m 4s 5ms', and they are fully explained in an appendix of Robot Framework User Guide. Optional <span class=\"name\">reason\x3c/span> can be used to explain why sleeping is necessary. Both the time slept and the reason are logged.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Sleep\x3c/td>\n<td>42\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Sleep\x3c/td>\n<td>1.5\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Sleep\x3c/td>\n<td>2 minutes 10 seconds\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Sleep\x3c/td>\n<td>10s\x3c/td>\n<td>Wait for a reply\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Sleep","shortdoc":"Pauses the test executed for the given time."},{"args":"name, msg=None","doc":"<p>Fails unless the given variable exists within the current scope.\x3c/p>\n<p>The name of the variable can be given either as a normal variable name (e.g. <span class=\"name\">${NAME}\x3c/span>) or in escaped format (e.g. <span class=\"name\">\\${NAME}\x3c/span>). Notice that the former has some limitations explained in <a href=\"#Set Suite Variable\" class=\"name\">Set Suite Variable\x3c/a>.\x3c/p>\n<p>The default error message can be overridden with the <span class=\"name\">msg\x3c/span> argument.\x3c/p>\n<p>See also <a href=\"#Variable Should Not Exist\" class=\"name\">Variable Should Not Exist\x3c/a> and <a href=\"#Keyword Should Exist\" class=\"name\">Keyword Should Exist\x3c/a>.\x3c/p>","name":"Variable Should Exist","shortdoc":"Fails unless the given variable exists within the current scope."},{"args":"name, msg=None","doc":"<p>Fails if the given variable exists within the current scope.\x3c/p>\n<p>The name of the variable can be given either as a normal variable name (e.g. <span class=\"name\">${NAME}\x3c/span>) or in escaped format (e.g. <span class=\"name\">\\${NAME}\x3c/span>). Notice that the former has some limitations explained in <a href=\"#Set Suite Variable\" class=\"name\">Set Suite Variable\x3c/a>.\x3c/p>\n<p>The default error message can be overridden with the <span class=\"name\">msg\x3c/span> argument.\x3c/p>\n<p>See also <a href=\"#Variable Should Exist\" class=\"name\">Variable Should Exist\x3c/a> and <a href=\"#Keyword Should Exist\" class=\"name\">Keyword Should Exist\x3c/a>.\x3c/p>","name":"Variable Should Not Exist","shortdoc":"Fails if the given variable exists within the current scope."},{"args":"timeout, retry_interval, name, *args","doc":"<p>Waits until the specified keyword succeeds or the given timeout expires.\x3c/p>\n<p><span class=\"name\">name\x3c/span> and <span class=\"name\">args\x3c/span> define the keyword that is executed similarly as with <a href=\"#Run Keyword\" class=\"name\">Run Keyword\x3c/a>. If the specified keyword does not succeed within <span class=\"name\">timeout\x3c/span>, this keyword fails. <span class=\"name\">retry_interval\x3c/span> is the time to wait before trying to run the keyword again after the previous run has failed.\x3c/p>\n<p>Both <span class=\"name\">timeout\x3c/span> and <span class=\"name\">retry_interval\x3c/span> must be given in Robot Framework's time format (e.g. '1 minute', '2 min 3 s', '4.5').\x3c/p>\n<p>Errors caused by invalid syntax, test or keyword timeouts, or fatal exceptions are not caught by this keyword.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Wait Until Keyword Succeeds\x3c/td>\n<td>2 min\x3c/td>\n<td>5 sec\x3c/td>\n<td>My keyword\x3c/td>\n<td>arg1\x3c/td>\n<td>arg2\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Running the same keyword multiple times inside this keyword can create lots of output and considerably increase the size of the generated output files. Starting from Robot Framework 2.7, it is possible to remove unnecessary keywords from the outputs using <span class=\"name\">--RemoveKeywords WUKS\x3c/span> command line option.\x3c/p>","name":"Wait Until Keyword Succeeds","shortdoc":"Waits until the specified keyword succeeds or the given timeout expires."}],"name":"BuiltIn","named_args":true,"scope":"global","version":"2.8.3"};
</script>
<title></title>
</head>
<body>

<div id="javascript_disabled">
  <h1>Opening library documentation failed</h1>
  <ul>
    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
    <li>Make sure you are using a <b>modern enough browser</b>. Firefox 3.5, IE 8, or equivalent is required, newer browsers are recommended.</li>
    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
  </ul>
</div>

<script type="text/javascript">
    // Not using jQuery here for speed and to support ancient browsers.
    document.getElementById('javascript_disabled').style.display = 'none';
</script>

<script type="text/javascript">
    $(document).ready(function() {
        parseTemplates();
        document.title = libdoc.name;
        $.tmpl('start_template', libdoc).appendTo($('body'));
        if (libdoc.inits.length > 0) {
            $.tmpl('importing_template', libdoc).appendTo($('body'));
        }
        $.tmpl('shortcuts_template', libdoc).appendTo($('body'));
        $.tmpl('keywords_template', libdoc).appendTo($('body'));
        $.tmpl('footer_template', libdoc).appendTo($('body'));
        scrollToHash();
    });

    function parseTemplates() {
        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
            $.template(elem.id, elem.text);
        });
    }

    function scrollToHash() {
        if (window.location.hash)
            window.location.hash = window.location.hash.substring(1);
    }
</script>

<script type="text/x-jquery-tmpl" id="start_template">
    <h1>${name}</h1>
    <table class="metadata">
    {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
    {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
    <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
    </table>
    <h2 id="Introduction">Introduction</h2>
    <div class="doc">{{html doc}}</div>
</script>

<script type="text/x-jquery-tmpl" id="importing_template">
    <h2 id="Importing">Importing</h2>
    <table border="1" class="keywords">
        <tr>
            <th class="arg">Arguments</th>
            <th class="doc">Documentation</th>
        </tr>
        {{each inits}}
        <tr>
            <td class="arg">${$value.args}</td>
            <td class="doc">{{html $value.doc}}</td>
        </tr>
        {{/each}}
    </table>
</script>

<script type="text/x-jquery-tmpl" id="shortcuts_template">
    <h2 id="Shortcuts">Shortcuts</h2>
    <div class='shortcuts'>
        {{each keywords}}
            <a href="#${$value.name}" title="${$value.shortdoc}">${$value.name}</a>
            {{if $index < keywords.length-1}} &middot; {{/if}}
        {{/each}}
    </div>
</script>

<script type="text/x-jquery-tmpl" id="keywords_template">
    <h2 id="Keywords">Keywords</h2>
    <table border="1" class="keywords">
        <tr>
            <th class="kw">Keyword</th>
            <th class="arg">Arguments</th>
            <th class="doc">Documentation</th>
        </tr>
        {{each keywords}}
        <tr>
            <td class="kw"><a name="${$value.name}"></a>${$value.name}</td>
            <td class="arg">${$value.args}</td>
            <td class="doc">{{html $value.doc}}</td>
        </tr>
        {{/each}}
    </table>
</script>
<script type="text/x-jquery-tmpl" id="footer_template">
    <p class="footer">
        Altogether ${keywords.length} keywords.<br>
        Generated by <a href="http://code.google.com/p/robotframework/wiki/LibraryDocumentationTool">libdoc</a>
        on ${generated}.
    </p>
</script>

</body>
</html>
